Terracotta BigMemoryのオープンソースの代替手段はありますか?オープンソースのJava用オフ・ヒープ・キャッシュ・ソリューションはありますか?
実際、私は商用の代替品を見つけることさえできませんでした。私は、JNIとCでサポートされているソリューションなしでJVM内部で動作する純粋なJavaソリューションに興味があります。 apacheので提案があるよう
Terracotta BigMemoryのオープンソースの代替手段はありますか?オープンソースのJava用オフ・ヒープ・キャッシュ・ソリューションはありますか?
実際、私は商用の代替品を見つけることさえできませんでした。私は、JNIとCでサポートされているソリューションなしでJVM内部で動作する純粋なJavaソリューションに興味があります。 apacheので提案があるよう
私ははるかに高速であることをソリューションを開発していますが、私はあなたがコンセプトの、それだけで証拠としてだけではまだそれを使用することをお勧めしませんこの段階では。
http://vanillajava.blogspot.com/2011/09/new-contributors-to-hugecollections.html
あなたが特定の要件を持っている場合しかし、直接的たByteBufferやメモリマップファイルを使用するために、それを自分でコーディングする方が簡単かもしれません。
// using native order speeds access for values longer than a byte.
ByteBuffer bb = ByteBuffer.allocateDirect(1024*1024*1024).order(ByteOrder.nativeOrder());
// start at some location.
bb.position(0);
bb.put((byte) 1);
bb.putInt(myInt);
bb.putDouble(myDouble);
// to read back.
bb.position(0);
byte b = bb.get();
int i = bb.getInt();
double d = bb.getDouble();
メモリマップファイルの場合も同様です。メモリマップされたファイルは、直接メモリ制限にカウントされず、スワップ領域を使い果たしません。
BigMemoryがあなたの仕事をしないのですか?
と呼ばれています。これは他の回答と同じプロジェクトですが、DirectMemoryは[Apacheインキュベータ] (http://incubator.apache.org/directmemory/)。 – javanna
それはソリューションではありませんが、ご使用のケースのためたByteBufferを使用するためにどのようにガイドは、キース・グレゴリー約書かれています。概要はhttp://www.kdgregory.com/programming/java/ByteBuffer_JUG_Presentation.pdf、詳細はhttp://www.kdgregory.com/index.php?page=java.byteBufferをご覧ください。
MapDB(以前のJDBM4)という非常に優れたキャッシュソリューションがあります。 HashMap
とTreeMap
をサポートしていますが、埋め込みアプリケーションのみです。また、永続的なファイルベースのキャッシュもサポートしています。オフヒープ・キャッシュの
例:
DB db = DBMaker.newDirectMemoryDB().make();
ConcurrentNavigableMap<Integer, String> map = db.getTreeMap("MyCache");
または永続ファイルベースのキャッシュ:私はこの質問を持ってきた
DB db = DBMaker.newFileDB(new File("/home/collection.db")).closeOnJvmShutdown().make();
ConcurrentNavigableMap<Integer,String> map = db.getTreeMap("MyCache");
ディスクバックアップソリューションです。私が尋ねていることではありません。 – Tema
@Tema:それは両方をサポートしています。 –
MapDBがKotlinで開発され、ランタイムに依存していることに言及する価値があります。 –
自分がそう私はちょうどで、前の答えを更新するつもりです私の所見。
は私も同じ質問を語るQuoraのからこのスレッドを見つけました:http://www.quora.com/JVM/Whats-the-best-open-source-solution-for-java-off-heap-cache
本当に更新されていないdirectmemory以外に良いフィットのように見える別の解決策、(昨年)
しかし、私は、これら3つのいずれかを使用している大きな十分なアプリケーションを見つけるために、さらに興味があります:ダイレクトメモリ、SpyMemcached、xmemcached。私はこの回答を更新するでしょう。
JAVA OFF-ヒープキャッシュのこの実装は、ダイレクト・メモリを使用し、軽量のJavaライブラリで良好なパフォーマンスを提供します:
は、パフォーマンスの数値のためのベンチマークのセクションを見てみましょう。 Apache 2のライセンスを受けています。
提案が受け入れられました。 DirectMemoryは[Apacheインキュベータ](http://incubator.apache.org/directmemory/)にあります。 – javanna
そのプロジェクトは長寿を持たず、現在退職しています。 –