1

Githubの OpenHFT のリポジトリの ChronicleMapは、ドキュメントで次のように述べています。

  Chronicle Map implements the java.util.concurrent.ConcurrentMap, that stores 
  its data off the java heap. 

私はコンパイラを構築し、いくつかの派生言語のコンパイラ実装に貢献しました。私が取り組んだものは、すべてをスタックに割り当てます (これは、コード生成中に利用できるものです)。私は JVM と Java コンパイラに取り組んだことはありませんが、通常、クラス、ローカル変数、関数パラメーターなどのインスタンスを割り当てるために利用できるのはヒープとスタックだけであることは知っています。

ChronicalMap などのデータ構造をインスタンス化し、それらを JVM によるガベージ コレクションで使用できるようにする (そして JVM の一般的なメモリ管理で追跡する) ようにコンパイラに指示できるコードを作成する方法を誰か説明してください。機能)、しかし、ヒープから生計を立てていますか?

簡単な構造のドキュメントと関連する例を読みました。わかりますhowが、JVM との関連で正確に何が起こっているのか、その根底にある理由は不明です。

4

2 に答える 2

1

オフ ヒープという用語は、Java で「生の」メモリ バッファを使用する機能を指します。これらは、プロセス アドレス空間からの通常のメモリ バッファ、またはメモリ マップされたファイルである可能性があります。

これらのバッファは「生」です。内容は自分で管理します。ガベージ コレクタでは管理されません。

于 2014-10-01T18:10:17.437 に答える