2012-02-21 5 views
0

私は数時間実行する簡単なテストプログラムを使用しています。ヒープが安定しているときにJavaでRSSリークを診断する

PSまたはpmapのいずれかでプロセスを監視すると、jvisualvmがヒープが安定しているとレポートする間にRSS部分が増加します。

RSSアノテーションマッピングをすべて集計すると、時間とともに増加しています。

私はSun JDK 1.6.0_31でCentos 5.7 x64を使用しています。

時間の経過とともにRSSが増加するはずですか?

+0

プログラムで無限ループを実行するスレッドが499個作成されていますか? – ydroneaud

+3

こんにちは、RSSの意味はわかりませんが、この新しい文字列( "Hello World")を変更してみてください。この "Hello World"へ。メモリリークがないたびに新しい文字列を作成するようにしていないとします。とにかくこの運動のポイントは何ですか? –

+0

@yael:RSSは常駐セットのサイズを表します。http://en.wikipedia.org/wiki/Resident_set_size – tr9sh

答えて

0

バックグラウンドタスクがメモリにもっと多くのコード/リソースを持ち込むにつれて、RSSが時間とともに増加する可能性があります。あなたの例ではそれほど大したものではありません。注意:共有ライブラリを別のJVMインスタンスで使用すると、共有ライブラリがメモリにロードされ、RSSが増加する可能性があります。

通常、問題を示す最も簡単な例を見つけることをお勧めします。あなたは500スレッド、またはあなたが持っているコアの数だけでなければなりませんか? 1つのスレッドが忙しいときに起こりますか?代わりにnew Object()を作成するとどうなりますか?オブジェクトを作成せずにビジー状態になるとどうなりますか?

+0

で詳しく読むことができます。確かに500スレッド以上のコアを持っています。これが唯一のJAVAアプリの実行時に、この単純な例でRSSが増加している理由を理解しようとしています。私は共有ライブラリがメモリにロードされていることに起因すると考えるのは嫌ですか? –

+0

あなたの事例を単純化しない限り、そのことは分かりません。過剰なコンテキスト切り替えやGCingに起因する問題である可能性があります。何らかの方法であなたのマシンに固有のものである可能性があります。監視ツールを接続したり、他のプロセスで共有ライブラリを使用したりすることが原因です。 –

関連する問題