एक heapdump या एक चल वी एम को देखते हुए में है मैं कैसे पता चलता है कि क्या स्थायी पीढ़ी की सामग्री है? मैं 'jmap -permstat' के बारे में जानता हूं लेकिन यह विंडोज़ पर उपलब्ध नहीं है।मैं कैसे पता चलता है कि क्या, स्थायी पीढ़ी
उत्तर
तुम क्या है, जहां पता लगाने के लिए (JDK 1.6 7 के साथ) JConsole या jvisualvm.exe उपयोग कर सकते हैं। यदि आप जानना चाहते हैं कि आपकी सभी वस्तुएं एक दूसरे से और वस्तुओं के पेड़ से कैसे संबंधित हैं, तो आप एक्लिप्स मेमोरी विश्लेषक - http://www.eclipse.org/mat/ को आजमा सकते हैं।
सारांश में, आप मिल जाएगा आप "http://www.eclipse.org/mat/" से चाहते हैं।
शुभकामनाएं,
मैं विशेष रूप से देख रहा हूं कि स्थायी पीढ़ी में कौन सी वस्तुएं हैं। ये उपकरण उस प्रश्न का उत्तर नहीं देंगे। – Tom
हाय टॉम, MAT आपके प्रश्न का उत्तर दे सकता है लेकिन आपको एसएपी जेवीएम का उपयोग करना होगा, दुर्भाग्यवश इस समय थोड़ा मुश्किल हो रहा है। आपको https://www.sdn.sap.com/irj/sdn/nw-ce – kohlerm
स्थायी पीढ़ी में कक्षा वस्तु शामिल है। तो आपको कक्षाओं के लिए हीप डंप या ऑब्जेक्ट सूची के अन्य रूप की जांच करनी चाहिए। आप आमतौर पर यह दो कारण के कारण होता है स्थायी पीढ़ी के आकार के साथ समस्या है, तो:
- अपने कार्यक्रम या एक पुस्तकालय आप उपयोग कक्षाएं गतिशील बनाता है और स्थायी पीढ़ी के डिफ़ॉल्ट आकार बहुत छोटा है - सरल increate आकार यह एक प्रोग्रामिंग त्रुटि है तो आप इसे ठीक करना चाहिए (या खोज - MaxPermSize = 256M
- अपने कार्यक्रम या एक पुस्तकालय आप का उपयोग नए वर्गों गतिशील हर बार यह कहा जाता है बनाता है, इसलिए स्थायी पीढ़ी बढ़ जाती है बिना रुके का आकार: -XX साथ एक फिक्स/एक बग रिपोर्ट बनाएं)
यह देखने के लिए कि आपका कैसा कैसा है ई एक बड़ी अवधि में स्थायी पीढ़ी के आकार की जांच करें।
और स्थायी पीढ़ी के बारे में एक अच्छा सिंहावलोकन:
http://blogs.oracle.com/jonthecollector/entry/presenting_the_permanent_generation
से एनडब्ल्यू सीई प्राप्त करने की आवश्यकता होगी यह उत्तर अधूरा है: वर्तमान में हमारे पास एक ऐप है जो परमजन मेमोरी लीक हो रहा है और लोड की गई कक्षाओं की संख्या बिल्कुल स्थिर है। JConsole का उपयोग कर दोनों तथ्यों को देखा जा सकता है। हम मूल पोस्टर के समान समस्या से ग्रस्त हैं जिसमें हमारे पास परमजन का विस्तार से विश्लेषण करने का कोई तरीका नहीं है। –
के बारे में thr permsize of Eclipse
संक्षेप में मेमोरी विश्लेषक छदाम कर सकते हैं अपने ब्लॉग पोस्ट देखें, लेकिन आप एसएपी JVM की जरूरत है।
आप हल करने के लिए एक विशिष्ट समस्या है? String.intern() का उपयोग permgen समस्याओं के लिए सामान्य कारणों में से एक है। इसके अतिरिक्त कई कक्षाओं के साथ परियोजनाओं में भी permgen समस्याएं हैं। कक्षा परिभाषा और तार प्रशिक्षु:
मैं permgen में प्राप्त करने के लिए कैसे जानते हैं और देखते हैं कि क्या यह है नहीं है ...
स्थायी पीढ़ी वास्तव में केवल बातें के दो प्रकार होते हैं। लेटर बहुत ही कम आपको समस्याएं देता है, लेकिन इसे अक्सर समस्याओं के लिए दोषी ठहराया जाता है। कोड जनरेशन और आंशिक हॉट रीलोडिंग (संदर्भों को लटकाने) के कारण अक्सर समस्याएं होती हैं।
विपरीत नाम से पता चलता, permgen अंततः GC'ed भी बस नियमित जीसी चक्र का हिस्सा नहीं मिल रहा है,। इसलिए अनियंत्रित प्रशिक्षित स्ट्रिंग्स और अप्रयुक्त कक्षाएं साफ हो जाती हैं। लेकिन परमिट भी गतिशील रूप से नहीं बढ़ता है जिसका अर्थ है कि कभी-कभी JVM प्रारंभ के लिए अपनी सेटिंग्स का आकार बदलने के लिए आवश्यक होता है।
मैं एक ही बात में लेकिन एक एम्बेडेड मंच की स्मृति की कमी के कारण देख रहा हूँ। jmap के लिए कोड में
देखो, permstat उपकरण तभी उपलब्ध होता है sun.jvm.hotspot.tools.HeapSummary वर्ग उपलब्ध है। यह वर्ग सेवाशीलता एजेंट का हिस्सा है। ओपनजेडीके दस्तावेज के अनुसार (http://openjdk.java.net/groups/serviceability/svcjdk।एचटीएमएल # बीएसए):
सेवाशीलता एजेंट घटक हॉटस्पॉट भंडार के मानक निर्माण के हिस्से के रूप में बनाए जाते हैं। ये घटक हैं:
-libsaproc.so: यह एसए का मूल कोड घटक है।
-sa-jdi.jar: इसमें एसए के जावा क्लासेस शामिल हैं। इसमें जेडीआई का कार्यान्वयन शामिल है जो जेडीआई क्लाइंट को कोर फाइलों पर केवल पढ़ने के लिए डीबगिंग करने की अनुमति देता है और प्रक्रियाओं को लटका देता है।
एसए, jinfo, jmap द्वारा किया जाता है jstack
नोट: सेवा-एजेंट और प्रौद्योगिकियों कि इसका इस्तेमाल वर्तमान में JDK में शामिल नहीं हैं विंडोज प्लेटफॉर्म पर जारी करता है।
ओरेकल जेडीके के मामले में भी दिखता है। मैं अधिक जानकारी प्राप्त करने के लिए jmap टूल को संशोधित करना चाहता हूं।
यह आलेख Memory Monitoring with Java SE 5 वर्णन करता है कि प्रोग्रामिंग रूप से ढेर उपयोग, मेमोरी पूल (परमजन स्पेस सहित) पर जानकारी कैसे प्राप्त करें। इसका बहुत सरल:
MemoryUsage usage = ManagementFactory.getMemoryMXBean().getNonHeapMemoryUsage();
long nonHeapFree = usage.getMax() - usage.getUsed();
long nonHeapTotal = usage.getMax();
पर OSX (सूर्य वी एम) "गैर ढेर स्मृति उपयोग" मेरे परीक्षण में से मेल खाता है मानों permgen पूल निकट के लिए लौट आए और शायद कुछ VMs पर उपयोगी है कि permgen नहीं करेंगे।
एक तकनीक है कि मुझे मदद की -verbose:class
command-line option to java का इस्तेमाल किया गया है, और आप लॉग ऑन कर देंगे उत्पादन तुमसे कह के रूप में कक्षाएं लोड किए गए हैं/उतार। चूंकि वर्गों को परमिट में लोड किया जाता है, यह कुछ परिस्थितियों में मदद कर सकता है।
- 1. जब पता चलता है कि उपयोगकर्ता जावा
- 2. पता चलता है कि सीएसएस टिप्पणी
- 3. प्रक्रिया को कैसे पता चलता है कि इसे
- 4. वर्डप्रेस वर्गीकरण - यह कैसे पता चलता है कि object_id?
- 5. स्ट्रिंग अक्षर और स्थायी पीढ़ी मेमोरी एरिया
- 6. एक दृश्य कैसे पता चलता है कि WPF में उपयोग करने के लिए ViewModel क्या है?
- 7. क्या एंड्रॉइड प्रसारण रिसीवर लिखना संभव है जो पता चलता है कि फ़ोन कब उठता है?
- 8. एक दृश्य कैसे पता चलता है कि किस लेआउट का उपयोग करना है? डिफ़ॉल्ट कहां है?
- 9. पता चलता है/पता/फार्म के साथ सर्वलेट
- 10. आईफोन - यह कैसे पता चलता है कि यह किस वस्तु का जिक्र कर रहा है?
- 11. ReSharper कैसे पता चलता है कि यह रिटर्न प्रकार कभी शून्य नहीं है?
- 12. जावा में स्थिर आवंटन - ढेर, ढेर और स्थायी पीढ़ी
- 13. जावा कैसे पता चलता है कि एरे को कैसे घुमाया जाए
- 14. कैसे boost.asio पता चलता है कि कौन सा पोर्ट मेरा सर्वर ऐप सुन रहा है?
- 15. विंडोज़ कैसे पता चलता है कि एमडीएनएस प्रश्नों को कैसे हल किया जाए?
- 16. जेवीएम कैसे पता चलता है कि रनटाइम पर अपवाद कैसा है?
- 17. कैसे पता चलता है कि विंडोज एक्सई किस लाइब्रेरी का उपयोग करता है?
- 18. कैसे पता चलता है कि स्ट्रिंग में कोई विशेष वर्ण है या नहीं?
- 19. लिनक्स कर्नेल कैसे पता चलता है कि ड्राइवर फर्मवेयर कहां देखना है?
- 20. पर्ल प्रोग्राम कैसे पता चलता है कि फ़ाइल को पर्ल मॉड्यूल युक्त फ़ाइल कहां मिलती है?
- 21. लिंकर कैसे पता चलता है कि रनटाइम पर कौन से प्रतीकों को हल किया जाना चाहिए?
- 22. परियोजना नेविगेटर में पता चलता है कैसे स्वचालित रूप से
- 23. बैश कैसे पता चलता है कि मेरे परिवर्तनीय नाम कहां समाप्त होते हैं?
- 24. मैं कैसे मैं xcode 3 के साथ एक वीडियो है कि एक बटन "डिजाइन" है कि एक यूएमएल आरेख को प्रदर्शित करता है पता चलता देखा Xcode4
- 25. प्रोग्रामिक रूप से पता चलता है कि अज्ञात स्रोतों से स्थापित करने की अनुमति है
- 26. स्थायी NSManagedObjectID इतना स्थायी नहीं है?
- 27. क्या मैं प्रोग्रामेटिक रूप से पता लगा सकता हूं कि जीसी पीढ़ी एक उदाहरण कहाँ रहता है?
- 28. मैं कैसे पता लगा सकता हूं कि मेरा बाहरी आईपी पता क्या है?
- 29. पेज कैसे पता चलेगा कि मैं फ़ायरबग
- 30. मैं कैसे पता लगा सकता हूं कि मेरा प्रोग्राम सक्रिय निर्देशिका वातावरण में चलता है या नहीं?
आपके प्रश्न का उत्तर नहीं दे रहा है, लेकिन शायद आपको समस्या का उत्तर दे रहा है - सूर्य जेवीएम में एक परमिट है, लेकिन ऐसे अन्य जेवीएम हैं जो इससे ग्रस्त नहीं हैं। – Tnilsson
यहां समस्या यह है कि परमिट (या अन्य जेवीएम में समकक्ष) JVMTI इंटरफ़ेस द्वारा प्रकट नहीं किया गया है, और इसलिए टूल्स का आत्मनिरीक्षण करने का कोई साधन नहीं है। टूल विक्रेताओं के साथ यह एक बड़ा मुद्दा है। – skaffman
कृपया जावा संस्करण बताएं। पहले सूरज जेवीएम में, जीसी कक्षाओं को इकट्ठा करने के बारे में परिचित था। अगर आपको हेपडम्प मिलता है तो आप अनुमान लगा सकते हैं कि आंतरिक तार आपकी समस्या है या नहीं। – Ron