2011-02-03 4 views
0

以下の情報(特に現在の使用法)をプログラムで取得したいので、アプリケーションの "正常性ステータス"ページに表示することができます。このコードはJBoss 5.1で動作します。プログラムでjmapのような情報(ヒープ使用情報)を取得しますか?

$ jmap -heap 25837 

[...] 
Heap Configuration: 
    MinHeapFreeRatio = 40 
    MaxHeapFreeRatio = 70 
    MaxHeapSize  = 1572864000 (1500.0MB) 
    NewSize   = 1048576 (1.0MB) 
    MaxNewSize  = 4294901760 (4095.9375MB) 
    OldSize   = 4194304 (4.0MB) 
    NewRatio   = 2 
    SurvivorRatio = 8 
    PermSize   = 16777216 (16.0MB) 
    MaxPermSize  = 268435456 (256.0MB) 

Heap Usage: 
PS Young Generation 
Eden Space: 
    capacity = 332005376 (316.625MB) 
    used  = 314099536 (299.5486602783203MB) 
    free  = 17905840 (17.076339721679688MB) 
    94.60676203026303% used 
From Space: 
    capacity = 42008576 (40.0625MB) 
    used  = 5472256 (5.21875MB) 
    free  = 36536320 (34.84375MB) 
    13.026521060842434% used 
To Space: 
    capacity = 43122688 (41.125MB) 
    used  = 0 (0.0MB) 
    free  = 43122688 (41.125MB) 
    0.0% used 
PS Old Generation 
    capacity = 456589312 (435.4375MB) 
    used  = 316167864 (301.5211715698242MB) 
    free  = 140421448 (133.91632843017578MB) 
    69.24556832377189% used 
PS Perm Generation 
    capacity = 153092096 (146.0MB) 
    used  = 93768952 (89.42504119873047MB) 
    free  = 59323144 (56.57495880126953MB) 
    61.25002821830854% used 

私はそこMBeanはこの情報を使用することですが、javax.management.j2ee.statistics.Statsは情報に非常に薄いです期待してJMXコンソールをチェックする:

で見つけた
org.jboss.management.j2ee.statistics.JVMStatsImpl [ {UpTime=[ 1097449:UpTime(description: Time the VM has been running, units: MILLISECOND, startTime: 1296748847668, lastSampleTime: 1296749945117) ], HeapSize=BoundedRangeStatistics[ [low: 0, high: 828243968, current: 828243968]HeapSize(description: Size of the VM's heap, units: Bytes, startTime: 1296748847672, lastSampleTime: 1296749945117), BoundryStatistics[ 0, 0, HeapSize(description: Size of the VM's heap, units: Bytes, startTime: 1296748847670, lastSampleTime: 0) ] ]} ] 

答えて

1

その間。

List<MemoryPoolMXBean> pools = ManagementFactory.getMemoryPoolMXBeans(); 
for (MemoryPoolMXBean pool : pools) { 
    System.out.println (pool.getName() + ": " + pool.getUsage()); 
} 

のような出力を与える:

Pool: Code Cache: usage = init = 2359296(2304K) used = 11777408(11501K) committed = 11862016(11584K) max = 50331648(49152K) 
Pool: PS Eden Space: usage = init = 33554432(32768K) used = 83991760(82023K) committed = 138280960(135040K) max = 138280960(135040K) 
Pool: PS Survivor Space: usage = init = 5570560(5440K) used = 0(0K) committed = 35717120(34880K) max = 35717120(34880K) 
Pool: PS Old Gen: usage = init = 89522176(87424K) used = 419430168(409599K) committed = 419430400(409600K) max = 419430400(409600K) 
Pool: PS Perm Gen: usage = init = 16777216(16384K) used = 118636528(115855K) committed = 122028032(119168K) max = 197132288(192512K) 
関連する問題