AFAIK, LwjglImage#releaseImageForSharingNoEvent() releases the image from the OpenGL linking queue (to free spaces for others queued objects) but not from memory, while LwjglImage#release() calls out for a native object releaser which calls CL10.clReleaseMemObject(mem); and release the object from the memory.