4

Linux プラットフォームでは、jboss 上の私の Java アプリには 128MB のヒープがありますが、1.6GB の実際の RAM を使用します。1.4GB がどこにあるのかを調べるにはどうすればよいですか?

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM  CODE DATA TIME+  COMMAND
 1379 root      16   0  9.7g 1.6g 1980 S  0.7  1.3 36  9.7g 0:11.03 java

ありがとう、
エムレ

4

4 に答える 4

1

私の最初のステップは、 VisualVMYourKitなどのメモリ プロファイラーでプロセスを調べることです。これにより、プロセスのメモリ使用量に実際に何が起こっているかについて、かなりの初期の洞察が得られます。

この種の問題のトラブルシューティングに役立つ別のツールは、jmap.

于 2012-05-09T10:51:53.030 に答える
1

どうやって調べたらいいのかわからない。しかし、私の理論では、あなたのアプリケーションは巨大なファイルをMemoryMappedBuffer. 質問の統計によると、9.7 ギガバイトのアドレス空間を使用しています。

于 2012-05-09T10:52:37.273 に答える
0

Emre He さん、設定によると、perm gen start/max size のみを設定しました。次のパラメーターを JVM に追加してみてください: -Xms128m -Xmx128m

于 2012-05-09T14:45:31.383 に答える
0

「私のアプリには 128MB のヒープがあります」とはどういう意味ですか? -Xmx 128M で JBoss を起動していますか?

とにかく、ヒープサイズはプロセスが使用するメモリの量を決定しません.JVMは、各スレッドのスタックを含む他のものにメモリを割り当てます.

しかし、あなたの場合、1.4GB は巨大に見えるので、おそらく説明にはなりません。アプリケーションで何か特別なことをしていますか?

于 2012-05-09T11:00:48.870 に答える