incubator-directmemory-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Raffaele P. Guidi (Created) (JIRA)" <>
Subject [jira] [Created] (DIRECTMEMORY-9) Add a defragmentation mechanism
Date Sun, 16 Oct 2011 09:40:11 GMT
Add a defragmentation mechanism

                 Key: DIRECTMEMORY-9
             Project: Apache DirectMemory
          Issue Type: Task
            Reporter: Raffaele P. Guidi

Add a defragmentation mechanism 

>From the ML: (paliwalashish)
>Will the offHeapMemoryBuffer get fragmented over time? Say after a
couple thousand get/remove operations, will the off-heap have start
having holes in the Buffer?
>It will, definitely. I had two solutions ready in my mind (that rely on having more than
one buffer active): 
Simplest, and fastest but with some drawbacks: when buffer.isTooDefragmented() then simply
buffer.clear() - you loose everything, but - hey, it's a cache, not a db
Less simple, slower, less drawbacks: when buffer.isTooDefragmented() mark the buffer as readOnly
and then foreach (ptr in buffer) copy ptr.content in emptyBuffer and update ptr accordingly
where isTooFragmented==number_of_empty_pointers over total_pointers > desirable quota

The first one could be accomplished during a put() operation (buffer.clear is a logical operation
that takes no time) while the second should be taken care of by the background thread. Those
quick&dirty solutions could of course be replaced with real defragmentation algorithms
- may taken from various malloc() implementations, that are the original inspiration

See also

This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:!default.jspa
For more information on JIRA, see:


View raw message