2010-08-21 9 views
6

मैं वर्तमान में VisualVM का उपयोग कर रहा हूं, लेकिन मेरी समस्या यह है कि मैं इसे उत्पन्न ग्राफ को सहेज नहीं सकता। मुझे इसके मेमोरी उपयोग और चलने वाले समय के बारे में कुछ डेटा रिपोर्ट करने की आवश्यकता है, हालांकि System.nanoTime() के साथ चलने का समय आसान है। मैंने नेटबीन प्रोफाइलर भी कोशिश की है, लेकिन यह वही नहीं है जो मैं चाहता हूं, क्योंकि मैं उन विशिष्ट हिस्सों की तलाश नहीं कर रहा हूं जो इसे धीमा कर देंगे या कुछ भी हो जाएंगे, जिससे यह अधिक हो जाएगा। इसके साथ सबसे बड़ी समस्या यह है कि यह बहुत अधिक प्रसंस्करण समय खाती है। मुझे आसानी से डेटा को कैप्चर/ट्रांसफर करने की अनुमति नहीं देता है, जैसे कि VisualVM, कम से कम जहां तक ​​मैं कह सकता हूं।जावा प्रोग्राम के मेमोरी उपयोग को मापने का सबसे अच्छा तरीका?

आदर्श रूप से इसके बारे में जाने का सबसे अच्छा तरीका कुछ विधि कॉल होगा क्योंकि तब मैं जानकारी को और अधिक आसानी से प्राप्त कर पाऊंगा, लेकिन विजुअलVM जैसी कुछ भी जो वास्तव में मुझे ग्राफ को सहेजने देती है ठीक है। NetBeans प्रोफाइलर की तुलना में VisualVM के साथ प्रदर्शन भी बहुत अच्छा है, हालांकि मुझे लगता है कि ऐसा इसलिए है क्योंकि मैं अपने प्रोफाइलर का उपयोग नहीं कर रहा था।

मैं वर्तमान में उबंटू का उपयोग कर रहा हूं, लेकिन विंडोज 7 ठीक है। मेरे पास ऐसा प्रोग्राम होगा जो ऐसा करने में माहिर है, हालांकि उन कार्यक्रमों द्वारा प्राप्त जानकारी जो जेवीएम और अन्य चीजों को शामिल करने की संभावना नहीं है, जो बेहतर छोड़ दी जाएंगी।

ठीक है, जाहिर है, आप वर्तमान सत्र के स्नैपशॉट्स को सहेज सकते हैं और विंडो को विजुअलVM में अधिकतम कर सकते हैं, ताकि आप चार्ट को बड़ा कर सकें, स्नैपशॉट ले सकें और उन्हें काट सकें ... लेकिन यह एक हैक है। बेहतर सुझाव स्वागत है।

उत्तर

0

JProfiler आज़माएं। हालांकि यह मुफ़्त नहीं है, आप पहले मूल्यांकन संस्करण का प्रयास कर सकते हैं।

3

Runtime कक्षा को देखें। इसमें फ्रीमेमरी, मैक्समेमरी, और कुल मेमरी है। यह शायद आपके उद्देश्यों के लिए काफी करीब है।

0

HPjmeter कंसोल मुफ्त है। -Xloggc:<file> के साथ अपनी जावा प्रक्रिया चलाएं और इसके साथ <file> खोलें। न केवल आप अपने सत्रों को बचा सकते हैं, लेकिन आप रनों की तुलना कर सकते हैं। आपके कमांड लाइन सहित विचार करने के लिए अन्य विकल्प हैं:

-XX:+PrintGCTimeStamps 
-XX:+PrintGCDetails 
2

आप हैक छवि के बजाय स्मृति को मापने के लिए सुंदर विधि पसंद कर सकते हैं। JConsole JMX द्वारा अनुप्रयोगों की निगरानी के लिए जाना जाता है, यह प्रोग्राम API प्रदान करता है। मुझे लगता है कि आपको यही चाहिए।

देखें: Using JConsole to Monitor Applications

15
Runtime.getRuntime().freeMemory(); 

Runtime.getRuntime().totalMemory(); 
संबंधित मुद्दे

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