2017-08-18 19 views
0

ハードウェアパフォーマンスの問題を引き起こしていると書いたJavaアプリケーションで問題が発生しました。問題は(私はかなり確信しています)、アプリケーションを実行しているマシンの中には1GBのメモリしかないことがあります。私がJavaアプリケーションを起動するとき、ヒープサイズを-Xms 512m -Xmx 1024mに設定します。XmxとXmsのメモリが不足しています

私の最初の質問は、すべてのマシンを割り当てているので、メモリをJavaヒープにするには?

これは別の質問につながります。私はアプリでjconsoleを実行し、アプリケーションのメモリ使用量を監視しています。私が見ていることは、起動時に約30MBを消費し、約150MB私はpidでtopを使って見ると、アプリケーションは約6%のメモリを使い始めるとゆっくりと約20%まで上昇します。これはわかりません。なぜ私は1GBを割り当てるときに最大20%のメモリ使用量しか得られないのでしょうか?100% 。また、なぜアプリケーションが150MB以上を使用しているように見えない場合でも、そのメモリ(20%)を使用しているのはなぜですか?

XMSとXmxを調整する必要があり、それが問題を解決するはずですが、正確に何が起こっているのかをよりよく理解しようとしています。メモリ使用のための

答えて

1

2つの可能性:

あなたのアプリはちょうどあなたのアプリは十分にその多くのメモリが高速で使用していない多くのメモリ

それとも

ことを使用していません。

ガベージコレクタは、それが実行されるいくつかのポイントがあります:ちょうど予定さ

  1. を:それは、オブジェクトに

  2. のフルコレクションを削除するには簡単にクリーンアップされます:これが実行されます何が起こる

    あなたが設定されたメモリ制限を打つとき。

オプション1、一般的には、はるかに低い制御下にメモリ使用量を維持することができ、それJVM GCオプションは、スケジュール上のフルを実行するように設定されていない限り、それは完全なコレクションをヒットしません、迅速な収集に影響を与える場合。

あなたのアプリケーションでは、より低いxmx/xms値を設定して、OSに保証されたリソースがより多く残って、ページングが妨げられる可能性があります。

関連する問題