この投稿は、OpenHFTのよくある質問です。OpenHFT ChronicleMapのメモリ配置と制限
私はChronicleMapで考えていますが、多くの質問をしています。私はこの製品を検討しているほとんどのジュニアプログラマーが同様の考慮事項を持っていると確信しています。
メモリがこのAPIでどのように管理されているか説明しますか?
ChronicleMapは、そのデータを処理するために利用できるいくつかの注目すべきTBのオフヒープメモリリソースを宣言しており、そのことについて明確なビジョンを示したいと考えています。
500GBのHDと4GBのRAMのラップトップを備えたプログラマにお任せください。この場合、純粋な数学のsais - 利用可能な「交換された」メモリの総リソースは504GBです。 OSやその他のプログラムを半分にして、250GBのHDと2GBのRAMを残しておきましょう。 ChronicleMapが利用可能なリソースに相対的な数で割り当てることができる実際の利用可能なメモリについて詳しく説明できますか?
次の関連する質問はChronicleMapの実装に関連しています。
私の理解では、各ChronicleMapは、動作するメモリのチャンクを割り当て、最適なパフォーマンス/メモリの使用は、通過するデータの量を正確に予測できるときに達成されます。しかし、これはダイナミックな世界です。
(誇張なく可能)の例を設定します:
はKのマップ(キー)「都市」とそのV(値)と仮定 - (都市の)「説明」とのユーザー大きな制限を可能にします説明の長さ
まず、ユーザが入力した: - :次のユーザーが持ち去らます、今
ChronicleMap<Integer, PostalCodeRange> cityPostalCodes = ChronicleMap
.of(CharSequence.class, CharSequence.class)
.averageKey("Amsterdam")
.averageValue("City of bicycles")
.entries(5_000)
.createOrRecoverPersistedTo(citiesAndDescriptions);
およびアッセイを書き込みK = "Amsterdam"
、V = "City of bicycles"
とこのエントリはマップ を宣言するために使用され、それは、このようなペアのための先例を設定し、プラハ について彼がに渡す:K = "Prague"
、V = "City of 100 towers is located in the hard of Europe ... blah, blah... million words ..."
今、プログラマが最大5_000エントリを期待していたが、それは彼の手から取得し、エントリの何千があります。
この場合、ChronicleMapは自動的にメモリを割り当てますか?はいの場合は、このダイナミックなソリューションのChronicleMapsを宣言するより良いアプローチがありますか?いいえの場合は、このようなシナリオをどのように処理するかについてのアプローチ(コード例では最高)をお勧めしますか?
ファイルへの永続性はどのように機能しますか?
ChronicleMapsはRAMとディスクの空き容量を使い果たしますか?それを避けるベストプラクティス?
言い換えれば、過小評価や値(および/またはキー)の長さとエントリ数の過大評価の場合のメモリの管理方法について説明してください。
ChronicleMapで該当するのはどれですか?
- 私は、大きな塊(
.entries(1_000_000)
、.averageValueSize(1_000_000)
と実際の使用量を割り当てる場合である - エントリ= 100、平均値サイズ= 100。
どうなりますか?:
1.1。 - すべて正常に動作しますが、大量の無駄なチャンクがあります - 未使用ですか?
1.2。 - すべてが正常に動作し、未使用のメモリがに提供されています:
1.2.1 - ChronicleMap
1.2.2 - ChronicleMap
1.2.3を使用してスレッド与えられた - 指定されたプロセス
1.2.4 - 与えられたJVM
1.2.5 - OS
1.3。 - 使用されていないメモリに何か他のことが起こった場合はどうか説明してください。
1.4。 - オーバーサイズの宣言は、永続化ファイルに対してどうしますか?
-
ケース1の
- 反対 - 私は小さなチャンク(
.entries(10)
、.averageValueSize(10)
を割り当て、実際の使用量は、エントリの1_000_000sであり、バイトの平均値サイズ= 1_000s どうなる?: を。
こんにちは。私たちのコミュニティは様々な性別で構成されており、あなたが「紳士」と呼んでいる人は除外されていると感じるかもしれません。とにかく挨拶を全くしていない投稿を好む。ありがとう! – halfer