プロファイリングを行うときに奇妙な問題が発生します。下の図で説明すると、最大のオブジェクトは のみを取ることが明確にわかります35mo
。次の図を参照してください
。しかし、同時に使用されているメモリを確認すると、それを超えていることがわかります
500mo
35mo
使用されるヒープ500
が同時に超過している間に、最大のオブジェクトが最大になる理由を説明できる人がいますか? そしてどのように計算しheap used
ますか?
プロファイリングを行うときに奇妙な問題が発生します。下の図で説明すると、最大のオブジェクトは のみを取ることが明確にわかります35mo
。次の図を参照してください
。しかし、同時に使用されているメモリを確認すると、それを超えていることがわかります
500mo
35mo
使用されるヒープ500
が同時に超過している間に、最大のオブジェクトが最大になる理由を説明できる人がいますか? そしてどのように計算しheap used
ますか?
おそらく、すべてのオブジェクト作成をプロファイリングしているわけではありません。Netbeansの標準プロファイリング設定の1つは、オブジェクト作成の10分の1のみをプロファイルします。あなたの測定値は35MBがあなたのデータの51%であると言います。つまり、合計70MBのプロファイルを作成しました。これは、合計ヒープサイズとして測定しているものの約1/10です。
一般に、メモリを大量に消費している人の手がかりを探している場合は、作品の一部だけを測定するだけで十分です。すべての作品を追跡しない理由はパフォーマンスです。
すべてのメモリがどこで使用されているかを確認したい場合は、次のようにすることができます。
Netbeans 6.9.1では、これは「すべての...オブジェクトの割り当てを追跡する」という設定です。この数を減らすことができます(10分の1が問題の発見に役立たず、アプリケーションについて十分に説明していない場合)。ただし、これによりアプリケーションを実行できなくなる可能性があります。
ヒープダンプを作成することもできます。これには、オブジェクトの作成と削除に関する情報は含まれませんが、アプリケーションで現在稼働しているすべてのオブジェクトが表示されます。