2009-03-30 3 views
25

私はSunのホットスポットJVMで実行しているときにjava.lang.OutOfMemoryError: PermGen Spaceエラーを診断しようとしていますが、私のプログラムがさまざまな時点でどのくらいのPermGenスペースを使用しているか知りたいと思います。プログラムでこの情報を見つける方法はありますか?PermGenのスペース使用量をプログラムでどのように調べることができますか?

答えて

38

あなたはこのようなものを使用することができます。

Iterator<MemoryPoolMXBean> iter = ManagementFactory.getMemoryPoolMXBeans().iterator(); 
while (iter.hasNext()) 
{ 
    MemoryPoolMXBean item = iter.next(); 
    String name = item.getName(); 
    MemoryType type = item.getType(); 
    MemoryUsage usage = item.getUsage(); 
    MemoryUsage peak = item.getPeakUsage(); 
    MemoryUsage collections = item.getCollectionUsage(); 
} 

これはあなたの記憶のすべての種類を提供します。あなたは "Perm Gen"タイプに興味があります。

+2

ありがとう、これは動作します。私はMemoryPoolMXBeanを取っています。ここではname.equalsIgnoreCase( "Perm Gen")です。 –

+0

必要な情報、ありがとうございますkgiannakakis。 – vissu

関連する問題