2016-03-22 7 views
2

私のjavaFXアプリケーションではmemory leakの問題があるようですが、ネットビーンプロファイラツールを使用して、リークの原因を突き止めるのに役立っていますが、確かに分かりません私がやっている。アプリケーションでのメモリリーク

私はチュートリアルを見て、彼らはオブジェクトのsurviving generationsを監視すると言っていますが、私はまだこの情報をどのように確信しています。私は自分のアプリケーションを監視している間に最高のsurviving generationオブジェクトのスクリーンショットを撮った。

これらのオブジェクトを使用して正確に何をすべきか、実際にはmemory leakが原因ですか?予想外の高いメモリ使用量の

enter image description here

+1

これを見てください:http://stackoverflow.com/questions/6470651/creating-a-memory-leak-with-javaあなたの質問に答えはありませんが、メモリの作成方法に関する良い例がいくつかありますJavaでのリーク。これは、あなたの問題の特定に役立つかもしれません(あなたのプログラムが何をすべきかを知らないと難しいと言います;)) – whatTheFox

+0

@noobCoder Eclipse MATを使用して問題を発見できましたか? –

+0

まだありませんが、正しい方向に私を指摘しています。私は現時点で私のツールを提示しなければならないので、私は時間のかかる問題を見つけるために多くの時間をシンクできると感じているので、現在は当面はバックバーナーに入れています。私の努力はすべて、ツールが正しく動作することを確認するために現在行われています。 – noobCoder

答えて

1

一般的な原因は、コレクションにオブジェクトを追加し、完了したら(私はあなたが投稿した画像が問題になることがありHashMapを示し参照)、それらを削除されていません。典型的な解決策は、他のすべての参照がなくなればオブジェクトを生かし続けることのないコレクションを使用することです。詳しくはWeakHashMapを参照してください。

これらのタイプの問題をさらに詳しく調べるには、hrpof(VisualVM、JConsoleなどを使用できます)を取得し、Eclipse MATまたは同様のツールで解析します。

+0

私は 'WeakHashMap'に使用しているコレクションの型を変更することができないので、奇妙なことは、すべての私の' FXML'コントローラファイルを検索したところで 'HashMaps'を使用していないことです。 – noobCoder

+0

Eclipse MATは、どのオブジェクトが最も多くのメモリを消費しているかを示すことができます。また、GCルートに最短パスをマージすることで、何が生存しているかがわかります。 HashMapが誰に所有しているかを示す問題であると判明した場合 –

+0

JDKを使用している場合は、Java Mission Controlでも同様に処理できます。ここでそれについての素晴らしいチュートリアルです:https://www.javacodegeeks.com/2015/03/oracle-java-mission-control-the-ultimate-guide.html – whatTheFox

関連する問題