3

このバージョンの Java を実行しています。

java version "1.7.0_07"
Java(TM) SE Runtime Environment (build 1.7.0_07-b11)
Java HotSpot(TM) 64-Bit Server VM (build 23.3-b01, mixed mode)

これを、7.5 GB のメモリを持つ m1.large インスタンスで、Amazon EC2 の Windows 2008 R2 64 ビット サーバーで実行しています。

Java アプリを起動するときは、次のコマンド ラインを使用しています。

java -Xms6G -Xmx6G -server -jar start.jar

私の意図は、アプリケーションの実行時にデータセット全体をメモリにロードできるように、Java にヒープ用に 6GB を予約させることです。

しかし、アプリを起動すると、タスク マネージャーで使用されているメモリが 1.3GB しか表示されません。

4

1 に答える 1

6

問題は、タスク マネージャーに表示される既定のメモリ列 ("メモリ - プライベート ワーキング セット") を見ていることです。これは、実際に使用するために予約されているものを反映していません。

タスク マネージャーで、[表示] メニューに移動し、[列の選択] を選択します。「メモリ - コミット サイズ」列を追加します。この列には、Java から予約されたヒープ サイズが反映されていることがわかります。私のテストでは、-Xms6G のコマンドラインに対してコミットされた約 6.6GB を示しています。

これは、各列の意味を説明する Microsoft のページです。

メモリ - プライベート ワーキング セット:プロセスが使用し、他のプロセスと共有できないメモリの量を具体的に説明するワーキング セットのサブセット。」

メモリ - コミット サイズ:プロセスで使用するために予約されている仮想メモリの量。」

于 2012-10-02T00:33:43.000 に答える