トータルヒープ比率に最適なフリーヒープは何ですか?この比率のどの値でヒープサイズを増やすか/ヒープサイズを減らすことを検討する必要がありますか?jvm - トータルヒープ比に対する最適フリーヒープは何ですか?
答えて
、私はあなたに二つの例与えてみましょう:
例1を - あなたのプログラムが起動時にメモリの100Mの価値を割り当て、その後、残りのように、これまでどのような任意のメモリを割り当てませんその実行の。
この場合、スペースを無駄にしないように、ヒープサイズを100Mに設定する必要があります(ただし、おそらく101か何かが発生しますが...)。
例2 - プログラムは1秒あたり10Mのメモリを割り当てます。データは1秒以上持続されません。 (たとえば、多くの一時的なデータを必要とする計算をしていて、完了したら1つの整数を返します...)
正確な数値を知ることはあまり現実的ではないかもしれませんが、私と一緒に... "ライブ"データが10Mあるので、少なくとも10Mのヒープが必要です。それ以外に、ガベージコレクタがどのように動作するかを確認する必要があります。単純化すると、GCが完了するまでの時間はO(ライブセット)です。つまり、「死んだ」データの量は実際には入りません。一定のライブセットサイズでは、GC時間はヒープサイズに関係なく一定です。これによりヒープが大きくなります - >スループットが向上します。
(今、本当に台無しあなたは、ヒープの圧縮のようなものを追加して、画像がさらに少なく明確になる...)
それは問題の簡易版です 結論が、短いです答えは - それに依存します。
理想的な瞬時比は1です。理想的には、JVMは必要なメモリを正確に消費します。 )難しい目標です。)
問題点(TNilssonが指摘しているように)は、アプリケーションのメモリ要件が時間の経過とともに変化するため、一定の収集/圧縮を起こさない十分な領域を確保したいという問題がありますあなたが許容できるよりも頻繁に、あなたはそれがあなたがより多くのRAMを購入する必要がない十分なスペースをほとんど消費しないようにします。
これはおそらく、新しいオブジェクトを割り当てる割合によって異なります。ガベージコレクションには、ライブオブジェクトからの多くの作業トレース参照が含まれます。私はちょうど500MBの空き容量があり500MBの空き容量があったが、JVMがGCを実行する時間の95%を費やすほど多くの配列の割り当てが行われている状況を扱っている。したがって、ランタイムメモリの動作を忘れないでください。
「オブジェクト割り当てはJavaで本当に高速です」と言っているこれらのパフォーマンスチューニングの記事は、GC時間が1秒になると言わずに笑います。単一の簡単な答えはありません
- 1. nullに対するチェックは何回適切ですか?
- 2. JVMの最適化はどこから始まりますか?
- 3. Eigenfacesは顔の比較に最適ですか?
- 4. アプリをスキンするのに最適なデザインパターンは何ですか?
- 5. JVMバイトコードのNOPとは何ですか?
- 6. JVM命令とは何ですか?
- 7. sun jvmによるインライン最適化を無効にする方法は?
- 8. JVM上で実行される最も速い言語は何ですか
- 9. lsof JVMの対応ですか?
- 10. コンテンツを探すのに最適なエンベデッドビデオプレーヤーは何ですか?
- 11. DICOMでブール値に最も適した値は何ですか?
- 12. ウィンドウでのプログラミングに最適なキーボードマクロは何ですか?
- 13. ウェブサイトでストリームオーディオに最適な方法は何ですか
- 14. Linuxデスクトップでのプログラミングに最適なフォントは何ですか?
- 15. ヘルプページを作成する最適なソリューションは何ですか?
- 16. Railsソートパラメータを設定する最適なソリューションは何ですか?
- 17. UITableViewCellをカスタマイズする最適な方法は何ですか?
- 18. ジョブコレクションを実装する最適なアルゴリズムは何ですか?
- 19. これを実装する最適なソリューションは何ですか?
- 20. アニメーションを駆動する最適な方法は何ですか?
- 21. ウェブサイトの一部(データテーブルの賢明さ)に対するセキュリティ/パーミッションの最適なデザインは何ですか?
- 22. ループと比較最適化
- 23. データベースの質問に対する適切な制限は何ですか?
- 24. 権限に対処する適切な方法は何ですか?
- 25. どの言語(JVM上で動作する)はDSLの作成に最適ですか?
- 26. Java Webアプリケーションに最適な3Dグラフィックスライブラリは何ですか?
- 27. Rails SaaSアプリケーション用に最適なサーバスタック/設定は何ですか
- 28. Eclipse用に最適なプラグインは何ですか
- 29. ASP.netアプリケーションに最適なperfmonカウンタは何ですか?
- 30. 'カラー'構造に最適なデザインパターンは何ですか?
heapsize = live set-sizeまたはそれに近い値を設定すると、ガーベジコレクションと圧縮が常に行われます。 1を達成しようとすると、ひどいパフォーマンスにつながります。 – Tnilsson
これは本当に良い点です。私はそれを説明するために編集します。 –