2014-12-31 9 views
5

मैं एक आवेदन प्रोफाइल कर रहा हूं और स्ट्रिंग इनपुट करने के लिए इंटर्न का उपयोग वास्तव में मदद करता है। जो मैं खोजना चाहता हूं वह ऑब्जेक्ट पूल के लिए उपयोग करने के लिए एक अच्छी संख्या है, इसलिए मेरे पास प्रदर्शन दंड नहीं होगा। मुझे कैसे पता चलेगा कि इंटर्न पूल में कितने तार डाले गए थे?जेवीएम स्ट्रिंग पूल इंटर्न में कितने तार हैं

मैं कुछ उत्पादन ट्रेस चला रहा हूं, मैं वास्तव में इनपुट की गणना नहीं कर सकता।

क्या JVM इस के लिए एक एपीआई प्रदान करता है?

उत्तर

6

जेडीके 7 से शुरू करना, आप -XX:+PrintStringTableStatistics जेवीएम ध्वज का उपयोग स्ट्रिंग टेबल के आकार, जैसे कि बाल्टी की संख्या और बाल्टी के आकार के बारे में जानकारी प्रिंट करने के लिए कर सकते हैं।

आप उपकरण का उपयोग jmap -heap *process_id* पर कॉल करके भी कर सकते हैं जो अंत में तारों की संख्या और कुल आकार (जेडीके 7 + की आवश्यकता भी) के अंत में दिखाएगा।

अधिक जानकारी के लिए this blog post देखें।

+0

यह मानक आउटपुट के आंकड़ों को एक बार प्रिंट करता है, मैं किसी भी तरह इसकी निगरानी करना चाहता हूं। चूंकि यह स्ट्रिंग्स का उपयोग नहीं करता है, इसलिए मैं आवेदन जीवन चक्र में कब्जे वाले तारों की अधिकतम संख्या देखना चाहता हूं। – Zamir

+1

इस विषय पर एक और उपयोगी ब्लॉग पोस्ट: [* जावा 6, 7 और 8 में स्ट्रिंग.intern - स्ट्रिंग पूलिंग *] (http://java-performance.info/string-intern-in-java-6-7-8 /) द्वारा [मिखाइल वोरोंटोव] (http://java-performance.info/author/Mike/) –

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