私は本質的にディスクから多くのファイル(通常は10MB + XMLサイズのKb未満の混在したPDF)を読み込み、レガシーシステムに一度に1つずつアップロードするプログラムを持っています。週末には視覚的に動かして、今朝はヒープの使い方が、プログラムを実行するのにかかった時間にむしろ不均一であることを示すグラフに戻りました。私は時間の経過とともにヒープの使用量がほぼ均等になることを期待していました。visualvmのヒープグラフを理解する
私はこれについての説明を探しています。これは、4コアi5-2400(ハイパースレッディングなし)で32 GBのRAMを搭載したUbuntu 17.04(デスクトップではなくサーバー)上の64ビットOracle JVMです。このプログラムは本質的にコアの約50%を利用するシングルスレッドであり、実行する予定の時間がかかりました。
メモリが完全に使用されていないと、時間の経過と共に解放されることを理解します。私は負荷がかなり均等に分散されるべきであるので、使用量が時間の経過と共に低下することを理解していません。システムがアイドル状態になっているときにCPUスロットルの結果が表示されますか? JVMの最適化が始まっていますか?
これは問題ではないと思います。私は物事がいつもどおりに見えなくなった時を認識できるように、どうして物事がどう見えるのかを学びたいと思っています。これは、JVMのすべてのデフォルトを使用しています。有用なものがあれば、後でgcログを有効にできます。これらのGCヒューリスティックについて議論する良いリソースへのリンクがありますか? –
[tag:garbage-collection]タグ[wiki](https://stackoverflow.com/tags/garbage-collection/info)にはいくつかのリソースへのリンクがあります – the8472