Uploaded image for project: 'Apache DirectMemory'
  1. Apache DirectMemory
  2. DIRECTMEMORY-9

Add a defragmentation mechanism

    XMLWordPrintableJSON

Details

    • Task
    • Status: Open
    • Major
    • Resolution: Unresolved
    • None
    • None
    • None

    Description

      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?
      (Me
      >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 http://en.wikipedia.org/wiki/Malloc#Implementations

      See also https://github.com/raffaeleguidi/DirectMemory/issues/43

      Attachments

        1. DIRECTMEMORY-9.zip
          533 kB
          Michael André Pearce
        2. SANDBOX-IDEAS.zip
          663 kB
          Michael André Pearce

        Issue Links

          Activity

            People

              Unassigned Unassigned
              raffaeleguidi Raffaele P. Guidi
              Votes:
              1 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated: