調査 解析 解放されない 確認 最大 原因 使用量 メモリリーク メモリ ヒープサイズ サイズ xmx xmn old領域 cヒープ java servlets jvm memory-profiling Javaマップの各エントリを効率的に反復処理する方法 JAVAアプリのヒープメモリの使用量を確認してみます。まずあらかじめjvisualvmを起動しておきます。その後メモリを確認したいアプリケーションを起動してください。 JDKに標準で入っているjstatコマンドを使います。jstatコマンドではJavaヒープ領域中のNew領域・Old領域・Permanent領域の使用量・容量・最小容量・最大容量などを取得することができます。 ※ 2015/06/24追記: こちらはJava7までのヒープ領域についての記事です。

7.3.3 Javaヒープのメモリサイズの使用状況の確認方法 それぞれのメモリサイズは,アプリケーションを実際に動作させて,メモリ使用量を測定しながらチューニングしていきます。 この投稿は、その HotSpot コンパイラによって Cヒープが増加する状況を確認してみようと言う内容です。 ちなみに Java のプログラムも、他の言語と同様にオプティマイズ(最適化)されますが、それは javac でのコンパイル時ではありません。 アプリケーションの中でヒープの使用量を調べるにはいくつかの方法があります。 J2SE 1.4以前の場合,java.lang.RuntimeクラスのmaxMemoryメソッドとfreeMemoryメソッドを使用します(もちろん,Java SE 5.0でも使用できます)。 ヒープに存在している領域が少なくとも、そのオブジェクトが c ヒープに大きなメモリを確保している可能性があるからです。 Java では java.nio.ByteBuffer.allocateDirect などでヒープ外にメモリを確保できるので、どこかに ByteBuffer を参照しているオブジェクトがあるのかもしれません。 念のためjavaヒープをどれくらい使用しているか確認した結果は以下の通りです。 javaヒープの使;用量を確認すると 計算:S0U+S1U+EU+OU+PU 167838.5+148.3+22026.6=190,013.4(KB)=0.18(GB) (javaプログラム実行前後のfreeコマンドで確認した0.08GBよりも多いです)