On Sun, Oct 16, 2011 at 2:50 PM, Raffaele P. Guidi
<[email protected]> wrote:
> It will, definitely. I had two solutions ready in my mind (that rely on
> having more than one buffer active):
>
>   1. *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

IMHO, we can't assume that since its a cache, we can clear any buffer
it at our own will.
Cache entries must always be evicted based on what is configured by
user. Also we need a very efficient way of
finding when a buffer is too fragmented.

Take a use case, we put an entry a few hundred KB in size, and a lot
of entries which are few KB in size.
So how would the implementation work in these scenario's. I am just
thinking loud, we may already have this working, and I may not be
aware of it :)

>   2. *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
> http://en.wikipedia.org/wiki/Malloc#Implementations

Lets experiment with different strategies and see which works best. I
am yet to take a deep dive into the Pointer implementation :)

>
> Beside that: I think this was filed in github issue tracker as an
> enhancement together with some more - I think I should re-file them in JIRA.

Missed that, actually this came up when I was implementing the sample.

>
> Ciao,
>    R
>
> On Sun, Oct 16, 2011 at 9:31 AM, Ashish <[email protected]> wrote:
>
>> Folks,
>>
>> 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?
>>
>> --
>> thanks
>> ashish
>>
>



-- 
thanks
ashish

Blog: http://www.ashishpaliwal.com/blog
My Photo Galleries: http://www.pbase.com/ashishpaliwal

Reply via email to