# How to load data from stbi allocated memory into java managed memory?

LWJGL3 provides me with simple wrappers around nothings' stb libraries. In order to load images I thus make use of the stb_image wrapper.

My issue is that when I use this wrapper library, all I get back is a unsigned char * pointing to the pixel data in the memory allocated by stbi. While I can work with this, it introduces two issues that are non-trivial to me:

1. I have to explicitly manage this memory, thus either work with explicit free methods on any class that keeps the image-data any longer than during construction.
2. Access to the actual image-data from java is, to say the least, somewhat convoluted. Not to speak of modifying it.

Q: Is there any standard way to load the image-data produced by the stbi library via LWJGL wrappers into standard java memory?

My goal is that I can free the stbi allocated memory immediately after loading and don't have to worry about it anymore.

I also want to be able to access the actual image data for optional processing after loading the image.

I am looking for either a pure JDK solution or a solution that uses LWJGL3 or any other library (the smaller the footprint the better) that results in a java-managed memory structure giving access to these bytes (i.e. an object that can be garbage collected without me having to do anything other than releasing any references to it).