Is there a open-source off-heap cache solution for Java?

后端 未结 7 826
慢半拍i
慢半拍i 2020-12-25 12:22

Is there any open-source alternative for Terracotta BigMemory?

Actually I didn\'t even manage to find any commercial alternative. I\'m interested in pure Java soluti

相关标签:
7条回答
  • 2020-12-25 12:43

    https://github.com/raffaeleguidi/DirectMemory

    0 讨论(0)
  • 2020-12-25 12:43

    Although it isn't a solution, a guide to how to make use of ByteBuffers for your use case has been written about by Keith Gregory. Take a look at http://www.kdgregory.com/programming/java/ByteBuffer_JUG_Presentation.pdf for an overview and http://www.kdgregory.com/index.php?page=java.byteBuffer for the nitty-gritty details.

    0 讨论(0)
  • 2020-12-25 12:44

    I've been having this question myself so I'm just going to update the previous answers with my findings.

    I found this thread from quora which also talks about the same question:

    http://www.quora.com/JVM/Whats-the-best-open-source-solution-for-java-off-heap-cache

    The different solution that seem to be a good fit, besides the directmemory (which has not really been updated in the last year) are

    • MapDB - this seems to be a very complete solution that does much more then off-heap caching and supports a lot of features
    • HugeCollections - This seems to be much less complex application then MapDB, which is focused on allocating off-heap data by extending ConcurrentMap and Map. A fork project from this, meant to target Java 8, is Chronicle-Map. A nice article about this is http://blog.shinetech.com/2014/08/26/using-hugecollections-to-manage-big-data/
    • SpyMemcached - this is a very simple single-threaded implementation with good reputation on github.
    • xmemcached - this also has a fair reputation on github but it doesn't seem to be very talked about.
    • Fast serialization - also focused on reimplementing Java Serialization with focus on off-heap usage of memory - http://ruedigermoeller.github.io/fast-serialization/

    However, I would be interested furthermore to find a big enough application that is using any of these three: directmemory, SpyMemcached, xmemcached. Should I find one I will update this answer.

    0 讨论(0)
  • 2020-12-25 12:47

    This implementation of a java off-heap cache uses direct memory and provides good performance in a light-weight java library:

    https://github.com/snazy/ohc

    Take a look at the benchmarking section for performance numbers. It's licensed under Apache 2.

    0 讨论(0)
  • 2020-12-25 13:00

    There is a very good cache solution named MapDB(JDBM4 formerly). It supports HashMap and TreeMap But it is only application embedded. It also support persistent file based cache.

    Example for off heap cache:

    DB db = DBMaker.newDirectMemoryDB().make();
    ConcurrentNavigableMap<Integer, String> map = db.getTreeMap("MyCache");
    

    Or persistent file based cache:

    DB db = DBMaker.newFileDB(new File("/home/collection.db")).closeOnJvmShutdown().make();
    ConcurrentNavigableMap<Integer,String> map = db.getTreeMap("MyCache");
    
    0 讨论(0)
  • 2020-12-25 13:02

    Looks like there is a proposal at apache:

    http://wiki.apache.org/incubator/DirectMemoryProposal

    0 讨论(0)
提交回复
热议问题