2011-07-12 8 views
1

Java 1.5アプリケーションでメモリリークを検出したいと考えています。私はプロファイリングのためにJProfilerを使用します。 私のアプリケーションのVMサイズが約790000KB(約300000KBから増加)であることをウィンドウズのタスクマネージャーを使って確認しています。プロファイラでは、割り当てられたヒープが266MB(増加している)であることがわかります。VMのサイズ(タスクマネージャ)とヒープサイズのJavaアプリケーション

おそらくルーキーな質問ですが、それ以外にもヒープ以外のメモリを大量に占有して、約700MBのサイズ(またはプライベートバイトサイズ)になることはありますか?

hereの回答によれば、占有できるスレッドは約1200スレッドありますが、700MBまでいくらかスペースがあると思います。ところで、どのくらいのスレッドのスタック占有メモリを確認できますか?

ありがとうございました。

答えて

0

JVMは常駐メモリを使用しない仮想メモリを多く使用できます。起動時に、ヒープを割り当て、共有ライブラリにマップします。ロードされるクラスは、Perm Gen空間を使用します。アプリケーションはヒープの最大値と同じ大きさのダイレクトメモリを使用できます。各スレッドが作成されると、スレッドごとにスタックが割り当てられます。いずれの場合も、このメモリが使用されるまでは、アプリケーションに割り当てられない可能性があり、物理メモリを使用しない可能性があります。アプリケーションがウォームアップすると、仮想メモリの多くが物理メモリになる可能性があります。

JVMが効率的に実行されていないと思われる場合は、まずJava 5.0が最後にリリースされて以来、多くの修正と改善を加えたJava 6を試してみます。

+0

ありがとうございました。私はJava 6に切り替えることはできません。おそらくJVMは問題ではなく、私のアプリケーションです。 – ovdsrn

関連する問題