1

アプリケーションに非常に大きなヒープサイズが表示されていますが、使用メモリが非常に小さいです。

ヒープサイズ:10 GB +、使用メモリ:500 MB

これを説明するものは何ですか?ヒープサイズが減少しないのはなぜですか。 メモリグラフ

私のJavaメモリパラメータは次のとおりです。

-Xms8448m -Xmx12544m -XX:PermSize = 192m -XX:MaxPermSize = 256m -XX:+ UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction = 60

なぜこの奇妙な振る舞いなのか、アドバイスしてください。グラフにガベージコレクションされている使用済みメモリが表示されますが、ヒープメモリの何が問題になっていますか????

4

5 に答える 5

5

引数からの初期ヒープサイズ

-Xms8448m

8GBを超えています。また、

-Xmx12544m

これを12GB以上に拡張する許可を、JVMに付与します。これを実行し、メモリが使用可能であり、それが保持するのに最適なヒープサイズであると判断した場合は、解放しない可能性があります。仕様には、JVMがヒープサイズを小さく保つように努めるべきであると言っているものは何もありません。

于 2012-09-21T13:40:12.460 に答える
2

HotSpotJVMのヒープサイズが減少することはありません。一部のGCアルゴリズムは、メモリをOSに戻すことができますが。ただし、後でJConsoleがメモリ削減を表示しない場合(JConsoleでは、ヒープ用に予約されたアドレス空間範囲が表示されます)、OSプロセスメモリ監視を使用して、JVMが実際にメモリを解放していることを確認する必要があります。

未使用のメモリをOSに戻すことができるアルゴリズムは次のとおりです。

  • シリアルコレクター(-XX:+ UseSerialGC)
  • G1(-XX:+ UseG1GC)
于 2012-09-22T10:40:04.723 に答える
0

上記の-Xms8448mを削除します。初期ヒープサイズを指定します。これを削除すると、期待どおりに機能するはずです。

于 2012-09-21T13:41:16.107 に答える
0

初期ヒープサイズを最大8.5GBに指定しています-Xms8448m。Javaの一部の実装は、実際にヒープを縮小することをサポートしていません(多くの場合、システムの制限が原因です)。初期ヒープを小さくするには、この値を減らします。

于 2012-09-21T13:41:42.867 に答える
0

JVMは、仮想メモリとして起動時に最大ヒープサイズを予約します。このメモリのどれだけがメインメモリであるかは、使用される量によって異なります。

最小メモリを設定しても、それが使用されることは保証されませんが、この時点までのメモリ使用量を制限するための最小限の試行のみが行われます。

しかし、なぜヒープサイズがほぼ12GBになっているのでしょうか。

それはあなたがそれを設定したものです。

于 2012-09-21T13:52:13.063 に答える