There is a way to free this memory. We will need to extend ByteBuffer to do this. finalize() method actually deallocates memory. But its a protected member. http://stackoverflow.com/questions/1854398/how-to-garbage-collect-a-direct-buffer-java
So we might have to allocate a new Buffer and terminate the old one. This is gonna be expensive but since this is not done too often it should be ok. Have opened a JIRA for this. https://issues.apache.org/jira/browse/DIRECTMEMORY-24 Also could you please give me developer access and add me as a contributor so that I can assign tickets and submit patches ? Cheers, Akash A On Thu, Oct 20, 2011 at 1:26 PM, Raffaele P. Guidi < [email protected]> wrote: > It is not casual. I didn't find a way to free a DirectBuffer except than > stopping the jvm. Please double check it, ten talented programmers are > better than a dumb one ;-) > > On Thursday, October 20, 2011, Akash Ashok <[email protected]> wrote: > > I currently see that we have > > > > Cache.java > > public static void clear() { > > for (OffHeapMemoryBuffer buffer : buffers) { > > buffer.clear(); > > } > > activeBuffer = buffers.get(0); > > } > > > > OffHeapMemoryBuffer.java > > > > public void clear() { > > allocationErrors = 0; > > pointers.clear(); > > createAndAddFirstPointer(); > > buffer.clear(); > > used.set(0); > > } > > > > buffer.clear() doesn't actually deallocate the memory. I assume currently > we > > dnt have the feature of de-allocating memory which means that we can't > > resize the cache once instantiated even if we want to. I feel we should > have > > this feature which would give deeper control on the Cache. > > > > > > > > Cheers, > > Akash A > > >
