12

私の質問はタイトルの通りで、検索していくつかの知識を得ました:

  1. Linuxには共有メモリ がありますアプリケーションまたはプロセスの実際のメモリ使用量を測定する方法は?

  2. JVM は Xms に設定されたメモリ量を予約します 。 -Xms JVM は、ヒープ メモリに関して何を意味しますか?

しかし、まだ理由がわからない場合は、いくつかの助けを提供できますか?

これがUbuntu12.04(64ビット)での私のテスト実行です| JDK 1.7.0_04。そしてトップは以下を示しています:

  PID USER      PR  NI  VIRT  RES       SHR S %CPU %MEM    TIME+  COMMAND
 4067 brian     20   0 5316m **262m** 7496 S    0  3.3   0:00.30 java -**Xms4096m** -Xmx4096m Test
 4066 brian     20   0 3182m **256m** 7496 S    0  3.3   0:00.30 java -**Xms2048m** -Xmx2048m Test
 4065 brian     20   0 2114m **252m** 7492 S    0  3.2   0:00.30 java -**Xms1024m** -Xmx1024m Test
 4064 brian     20   0 1314m  **76m** 7584 S    0  1.0   0:00.20 java -**Xms256m** -Xmx256m Test
 4063 brian     20   0 1180m  **51m** 7608 S    0  0.7   0:00.21 java -**Xms128m** -Xmx128m Test
4

2 に答える 2

6

常駐メモリ、つまり消費された物理 RAM を見ています。詳細については、こちらを参照してください。

ただし、仮想メモリは、(ディスクに) スワップ アウトされたメモリを含む、アプリケーションによって消費されるメモリです。仮想メモリと-Xms設定がより密接に対応していることがわかります。

詳細については、この ServerFault の回答を参照してください。

于 2012-08-24T11:45:34.097 に答える
6

JVM が起動すると、起動時に仮想メモリの 1 つの連続ブロックとして最大ヒープ サイズが予約されます。ただし、実際に使用されるページのみが常駐ページ(実際のメイン メモリ)になります。

最小サイズを設定すると、JVM がそれを必要としない場合、その量のメモリを強制的に使用することはありません。代わりに、この時点までメモリを削減するのにほとんど労力はかかりません (まだいくつかのマイナー コレクションが表示される場合があります)。ほとんどのアプリケーションでは、ほとんどすぐに最小サイズに達しますが、「hello world」プログラムは、設定したサイズに関係なく同じメモリを使用します。なる最小サイズ。

于 2012-08-24T12:19:10.410 に答える