この投稿に示されているように、ヒープ サイズを増やしてもヒープ領域が不足する Java アプレットのヒープ ダンプを分析しようとしています。アプレット: Java ヒープ領域
今日の朝、いくつかのヒープ ダンプを取り (はい、デジタル ダンプを取ることは可能です)、MAT と Visual VM 1.3.5 でそれらを分析しようとしています。リーク テストを実行した後、主要な容疑者は org.eclipse.jdt.internal.core.JavaModelManager と org.eclipse.jst.jee.archive.internal.ArchiveImpl でした。コードでこれらを使用したことはありません。
Visual Vm は、最大のスペースが Byte[]、Int[]、Char[]、java.lang.string、および short[] クラスによって占められていることを示しています。私は自分のプログラムでこれらをあまり使用していません。このダンプをどのように理解すればよいですか? また、次のステップは何ですか? 必要に応じて、ダンプのコピーを投稿できます。
更新: 私の場合、MAT はビジュアル VM よりも優れています。私は朝からダンプ(再び..デジタルダンプ)を取得し、両方のツールで分析しています。VVM は org.eclipse.jdt.internal.core.JavaModelManager と org.eclipse.jst.jee.archive.internal.ArchiveImpl をリークの疑いのあるレポートで容疑者として表示しますが、Eclipse メモリ アナライザー (MAT) は私の swing アプリケーションが作成していることを示します。フォルダ内の画像のサムネイル (各画像は約 100kb) であり、それらを JToggleButton として表示します。しかし、サムネイルが追加されると、JtoggleButton のサイズは 6MB になります。したがって、フォルダに 100 個の画像がある場合、画像のサムネイルは少なくとも 600MB になります。それに加えて、私はこのプログラムで他のことをする必要があります.MATは、この場合、ほとんどのヒープスペースを占有した正確なオブジェクトを特定するのに役立ちました.
ありがとうDJ。