7.14.1 Explicitヒープのある時点での利用状況(スナップショット)の調査
Explicitヒープのある時点での利用状況(スナップショット)を調査する方法には,スレッドダンプを確認する方法と,Java APIで情報を取得する方法があります。
-
スレッドダンプを確認する方法
cjdumpsvコマンドを実行すると,任意のタイミングでスレッドダンプを出力できます。スレッドダンプには,Explicitヒープおよび各Explicitメモリブロックの利用状況が出力されます。
出力例を次に示します。
Explicit Heap Status -------------------- max 65536K, total 21376K, used 20480K, garbage 1234K (31.2% used/max, 95.8% used/total, 6.0% garbage/used), 1 spaces exist Explicit Memories(0x12345678) "EJBMgrData" eid=1(0x02f25610)/R, total 21376K, used 20480K, garbage 1234K (95.8% used/total, 6.0% garbage/used, 0 blocks) Enable
背景色付きの太字の部分が,Explicitヒープおよび個別のExplicitメモリブロックの利用状況です。
この例の場合,Explicitヒープの最大サイズは65,536キロバイト,確保済みExplicitヒープサイズは21,376キロバイトです。また,「EJBMgrData」という名称のExplicitメモリブロックのメモリ確保済みサイズは21,376キロバイト,利用済みサイズは20,480キロバイトであることがわかります。
-
Java APIで情報を取得する方法
JavaVMのJava APIを使用して,ExplicitヒープおよびExplicitメモリブロックの利用状況を取得できます。次に示すAPIを使用してアプリケーションを実装することで,任意の処理のタイミングで情報を取得できます。
- Explicitヒープの利用状況を取得するメソッド
-
JP.co.Hitachi.soft.jvm.MemoryArea.ExplicitMemory.getMemoryUsage()
- Explicitメモリブロック利用状況を取得するメソッド
-
JP.co.Hitachi.soft.jvm.MemoryArea.ExplicitMemory.freeMemory()
JP.co.Hitachi.soft.jvm.MemoryArea.ExplicitMemory.totalMemory()
JP.co.Hitachi.soft.jvm.MemoryArea.ExplicitMemory.usedMemory()