में मेमोरी लीक के लिए निगरानी वर्षों के लिए, हम +UseParallelOldGC
का उपयोग कर मामूली ढेर आकारों के साथ जावा सेवाओं चल रहा है। अब, हम एक बड़े ढेर और जी 1 कलेक्टर का उपयोग कर एक नई सेवा शुरू करना शुरू कर रहे हैं। यह बहुत अच्छी तरह से जा रहा है।जावा G1: उत्पादन
+UseParallelOldGC
का उपयोग करने वाली हमारी सेवाओं के लिए, हम संग्रहण के बाद पुराने पीढ़ी के आकार को देखकर और थ्रेसहोल्ड पर सतर्क करके स्मृति रिसाव की निगरानी करते हैं। यह काफी अच्छी तरह से काम करता है, और वास्तव में केवल दो हफ्ते पहले हमारे बेकन को बचाया।
ManagementFactory.getMemoryPoolMXBeans()
- नाम
"Old Gen"
- में समाप्त होने के साथ
MemoryPoolMXBean
परिणाम के लिए खोजgetCollectionUsage().getUsed()
तुलना करें (यदि उपलब्ध हो)getMax()
विशेष रूप से, +UseParallelOldGC
के लिए, हम निम्न कार्य करें
दुर्भाग्यवश, ऐसा लगता है कि जी 1 में अब 012 की अवधारणा नहीं है।
मूल रूप से, हालांकि, हम पिछले मिश्रित संग्रह यह एक मिश्रित चक्र, या कुछ इसी तरह में करना चुनता निम्नलिखित G1 ढेर आकार की निगरानी करना चाहते हैं।
उदाहरण के लिए, वी एम के बाहर मैं एक awk स्क्रिप्ट केवल पाया गया कि पिछले '(mixed)'
था कि एक '(young)'
द्वारा पीछा किया और देखो क्या अंतिम ढेर आकार था के साथ खुशी होगी (जैसे, '1540.0M' 'Heap: 3694.5M(9216.0M)->1540.0M(9216.0M)'
)
वहाँ किसी भी है जावा वीएम के अंदर ऐसा करने का तरीका?
इस इसी तरह की जानकारी प्रदान करना चाहिए (शायद संग्रह आवृत्ति को कई संग्रहों से सभा सांख्यिकी, आदि के आधार पर) का पता लगाने में और अधिक परिष्कृत रणनीति खोजने की जरूरत है: http://stackoverflow.com/a/ 32509813/1362755 – the8472