Javaでオブジェクトのメモリ使用量を調べる方法

プロセスIDを調べる。

$ jps

3307 Hello

3642 Jps

 

メモリの状況を確認する。

$ jmap -histo 3307 > heap_histo.txt

 

--<heap_histo.txtの内容>----------------------------------------

num #instances #bytes class name

----------------------------------------------

1: 5459 703904 <methodKlass>

2: 5459 623904 <constMethodKlass>

3: 357 419176 <constantPoolKlass>

4: 329 266432 <constantPoolCacheKlass>

5: 357 241736 <instanceKlassKlass>

6: 1268 122888 [C

7: 11 107944 [I

8: 650 103816 [B

9: 417 51088 java.lang.Class

10: 614 40472 [[I

11: 542 33608 [S

12: 1035 24840 java.lang.String

・・・省略

----------------------------------------------------------------------

 

Linux、SolarisはJDK1.5から、WindowsはJDK1.6から使えるそうです。

 

・試しに使ったソースコード

--<Hello.java>----------------------------------------------------

class Hello {

    public static void main(String args[]) throws Exception{

        System.out.println("Hello Java!!");

        Thread.sleep(30000);

    }

}

----------------------------------------------------------------------

写真素材のピクスタ