2010-11-02 15 views
20

मैं एक आवेदन सर्वर के Permgen के डंप लेना चाहता था।Permgen को डंप कैसे करें?

मैं -XX:+TraceClassLoading -XX:+TraceClassUnloading का उपयोग नहीं करना चाहता क्योंकि मैं सर्वर को पुनरारंभ नहीं करना चाहता, न तो मैं jconsole का उपयोग करना चाहता हूं।

मुझे कोई उपकरण जैसे jmap (परप के लिए किसी भी विकल्प को ढेर करने के लिए इस्तेमाल नहीं किया गया था) परमिट प्राप्त करने के लिए ताकि मैं केवल pid की आपूर्ति कर सकूं।

+0

क्या इससे आपकी समस्या विकास को हल करने में मदद मिली? –

+0

मैंने पहले यह कोशिश की है कि यह कह रहा था कि अमान्य विकल्प और उपयोग को दिखा रहा है जो केवल-हिस्टो और -डम्प (हीप डंप) की अनुमति है। मैं jdk/bin के अंदर jmap का उपयोग कर रहा हूं यह सही है –

+0

'परमिट 'एमएस विंडोज़ पर विकल्प उपलब्ध नहीं है। – kschneid

उत्तर

10

ढेर के लिए किए गए 'परम्पन डंप' करना संभव नहीं है।

jmap -permstat के अलावा अन्य लोगों ने प्रस्तुत किया है, तो आप this blog entry: 'The Unknown Generation: Perm' में वर्णित अनुसार आपकी स्थायी पीढ़ी पर कुछ प्रकाश डालने के लिए मानक हीप डंप का विश्लेषण कर सकते हैं।

क्योंकि एक हीप डंप में वास्तव में परम स्पेस के बारे में बहुत सारी जानकारी नहीं होती है, इसलिए परम समस्याओं का सामना करना मुश्किल होता है। हाल ही में, मुझे स्पोरार, सुंदरराजन और कीवट द्वारा यह महान लेख मिला। लेखकों ने स्थायी पीढ़ी पर कुछ प्रकाश डाला। बेशक, मुझे इस "अज्ञात" पीढ़ी का विश्लेषण करने के लिए तुरंत और कैसे मैं ग्रहण स्मृति विश्लेषक का उपयोग कर सकता हूं। यह ब्लॉग इस बारे में है।

15
jmap -permstat <pid> 

ऐसे ही एक उत्पादन का उत्पादन हो रहा है:

30337 intern Strings occupying 2746200 bytes. 
class_loader classes bytes parent_loader alive? type 

<bootstrap> 2031 7253392 null  live <internal> 
0x517474f0 1 1760  null  dead sun/reflect/[email protected] 
0x4f83f670 1 1744 0x4ebfb8e8 dead sun/reflect/[email protected] 
[...] 

total = 287 10020 35889952  N/A  alive=3, dead=284  N/A 

यह एक पूर्ण डंप नहीं है, लेकिन कर रही है कि आप कुछ जांच करने के लिए अनुमति देने के लिए जा रहा है।

मैं अभी भी अधिक जानकारी प्राप्त करने के तरीके पर देख रहा हूं।

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