2009-03-30 15 views
25

मैं सन के हॉटस्पॉट जेवीएम पर चलते समय java.lang.OutOfMemoryError: PermGen Space त्रुटि का निदान करने की कोशिश कर रहा हूं, और यह जानना चाहूंगा कि मेरे प्रोग्राम विभिन्न बिंदुओं पर कितना पर्मगेन स्पेस उपयोग कर रहा है। क्या इस जानकारी को प्रोग्रामेटिक रूप से खोजने का कोई तरीका है?मैं अपने 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(); 
} 

यह आपको स्मृति के सभी प्रकार दे देंगे। आप "पर्म जनरल" प्रकार में रुचि रखते हैं।

+2

धन्यवाद, यह काम करता है। मैं MemoryPoolMXBean ले रहा हूं जहां name.equalsIgnoreCase ("पर्म जनरल")। –

+0

आवश्यक जानकारी, धन्यवाद kgiannakakis। – vissu

संबंधित मुद्दे