2017-02-10 34 views
1

私はpaho mqttライブラリを使用するアプリケーションを持っています。 私はVisualVMで、アプリケーションにメモリリークがあるように見えました。誰かが私を説明することができれば、これは、私は感謝される、すべてのenter image description hereMQTTアプリケーションからメモリリークを修正するには?

まずそのようないくつかのピークがあり、なぜ私はunderstantません:

は、ここではいくつかのスクリーンショットです。 それから、最初にアプリケーションは約5Mbのメモリから始まり、10Mb以上で終了することがわかりました。どこかでメモリリークがあると私は結論づけました。あなたはそれが5Mbのメモリ周りに戻りますが、それでも時間後の時間を成長していることがわかります enter image description here

:私はgarbaceコレクターを行った後、ここで

はスクリーンショットです。

enter image description here

私は、誰かが私を助けることができることを願っています:これは有用であろうが、私は、このメモリの増加から来たスレッドから知っているスクリーンショットを取った場合、私は知らない

。どうもありがとう !

答えて

1

グラフはgenerational garageコレクタの出力のように見え、メモリリークは表示されません。鋸歯は若い世代の作業であり、ベースラインの増加は古い世代にコピーされるデータの寿命が長いことです。

トリガー収集後にグラフが5MBにリセットされるのは、古い世代がクリーンアップされ、若い世代からコピーされた未参照データが解放されるためです。

1

これはHeisenbugです。言い換えれば、you are observing that you are observing(うまく言えば、私はそれをリンクしなければならなかった)。 JMXはRMIを介してメモリ統計を送信するためにメモリを消費しています。あなたのアプリが本当に食べていることを知りたい場合は、定期的にRuntime.max/total/freeMemoryを問い合わせて、それをファイルなどに記録してください。

関連する問題