2013-02-28 6 views
43

मैं कमांड नीचे का उपयोग कर हीप डंप बनाने हूँ में jmap का उपयोग कर हीप डंप विश्लेषण करने के लिए: जनरेट की गई फ़ाइलकैसे जावा

jmap -dump:file=DumpFile.txt <process-id> 

मैं खोला है - DumpFile.txt लेकिन यह पठनीय स्वरूप में नहीं है। तो कृपया मुझे बताएं कि जेनरेट की गई फ़ाइल में डेटा का विश्लेषण कैसे करें।

+0

क्या आपने 'jmap -heap > DumpFile.txt' को आजमाया है? –

+0

यह फ़ाइल एक्लिप्स मैट में ठीक खुलती है, बस इसे दें। एचआरओफ़ एक्सटेंशन – iTake

+0

यह भी देखें http://stackoverflow.com/questions/185893/how-do-i-analyze-a-hprof-file – rogerdpack

उत्तर

31

आप उपयोग कर सकते हैं jhat (जावा ढेर विश्लेषण उपकरण) जनरेट की गई फ़ाइल को पढ़ने के लिए:

jhat [ options ] <heap-dump-file> 

jhat आदेश एक जावा ढेर डंप फ़ाइल पार्स करके एक वेबसर्वर की शुरूआत। jhat आपको अपने पसंदीदा वेबब्रोसर का उपयोग करके ढेर डंप ब्राउज़ करने में सक्षम बनाता है।

ध्यान दें कि के साथ इसे पार्स करने में सक्षम होने के लिए आपके पास hprof बाइनरी प्रारूप आउटपुट होना चाहिए। आप इस प्रारूप में डंप उत्पन्न करने के लिए format=b विकल्प का उपयोग कर सकते हैं।

-dump:format=b,file=<filename> 
+0

मैंने jhat कमांड चलाया ढेर डंप फ़ाइल का विश्लेषण करें, लेकिन मुझे त्रुटि से नीचे मिल रहा है: '447start.out से पढ़ना ... java.io.IOException: अपरिचित जादू संख्या: 1027423549 com.sun.tools.hat.internal.parser.Reader.readFile पर (Reader.java:81) com.sun.tools.hat.Main.main (Main.java:143) पर '447start.out लॉग फ़ाइल का नाम है। – Chaitanya

+0

इस तरह के 'प्रारूप = बी' विकल्प के साथ डंप करने का प्रयास करें:' jmap -dump: format = b, file = ' –

+0

jhat उपयोगकर्ता के अनुकूल उपकरण नहीं है –

9

आप अपने आईडीई के रूप में ग्रहण का उपयोग करते हैं मैं उत्कृष्ट ग्रहण प्लगइन की सिफारिश करेंगे memory analyzer

एक अन्य विकल्प JVisualVM उपयोग करने के लिए, इसे पढ़ा (और बनाने) कर सकते हैं ढेर के रूप में अच्छी तरह से उदासीनता है, और हर के साथ भेज दिया है JDK। आप इसे अपने जेडीके की बिन निर्देशिका में पा सकते हैं।

+0

धन्यवाद मैं इस मुद्दे का विश्लेषण करने के लिए सॉफ्टवेयर डाउनलोड करता हूं। – Chaitanya

0

MAT, jprofiler, jhat संभावित विकल्प हैं। चूंकि jhat jdk के साथ आता है, इसलिए आप इसे कुछ बुनियादी विश्लेषण करने के लिए आसानी से लॉन्च कर सकते हैं। check this out

43

आपको किसी भी पथ के बिना jmap -heap:format=b <process-id> का उपयोग करना चाहिए। तो यह एक * .bin फ़ाइल बनाता है जिसे आप jvisualvm.exe (jmap के समान पथ) के साथ खोल सकते हैं। ऐसी डंप फ़ाइलों को खोलने के लिए यह एक अच्छा टूल है।

5

विजुअल वीएम ऐप्पल जेडीके के साथ नहीं आता है। आप इसके लिए क्षतिपूर्ति करने के लिए एक अलग एप्लिकेशन के रूप में VisualVM मैक एप्लिकेशन बंडल (डीएमजी) का उपयोग कर सकते हैं।

2

इसका उत्तर देने में बहुत देर हो चुकी है, लेकिन इसे तुरंत देखने के लायक हैं। विस्तार से समझने के लिए केवल 2 मिनट की आवश्यकता है।

सबसे पहले इस जावा कार्यक्रम

import java.util.ArrayList; 
import java.util.List; 

public class GarbageCollectionAnalysisExample{ 
    public static void main(String[] args) { 
      List<String> l = new ArrayList<String>(); 
      for (int i = 0; i < 100000000; i++) { 
        l = new ArrayList<String>(); //Memory leak 
        System.out.println(l); 
      } 
      System.out.println("Done"); 
    } 
} 

उपयोग बनाने JPS vmid लगता है (आभासी मशीन आईडी यानी JVM आईडी)

जाओ अध्यक्ष एवं प्रबंध निदेशक और नीचे टाइप करने के लिए आदेश>

C:\>jps 
18588 Jps 
17252 GarbageCollectionAnalysisExample 
16048 
2084 Main 

17252 वह वीएमआईडी है जिसे हमें चाहिए।

अब हम कैसे jmap का उपयोग करें और jhat

उपयोग jmap सीखना होगा - उत्पन्न करने के लिए ढेर

jmap के बारे में जावा डॉक्स से डंप "jmap प्रिंट वस्तु स्मृति नक्शे या के ढेर स्मृति विवरण साझा एक दिया प्रक्रिया या कोर फ़ाइल या एक दूरस्थ डिबग सर्वर "निम्न आदेश

उपयोग हीप डंप उत्पन्न करने के लिए>

C:\>jmap -dump:file=E:\heapDump.jmap 17252 
Dumping heap to E:\heapDump.jmap ... 
Heap dump file created 

जहां 17252 वीएमआईडी (ऊपर से उठाया गया है) है।

ढेर डंप ई में उत्पन्न हो जाएगा: \ heapDump.jmap

अब उपयोग Jhat Jhat जावा में कचरा संग्रहण डंप विश्लेषण करने के लिए प्रयोग किया जाता है -

C:\>jhat E:\heapDump.jmap 
Reading from E:\heapDump.jmap... 
Dump file created Mon Nov 07 23:59:19 IST 2016 
Snapshot read, resolving... 
Resolving 241865 objects... 
Chasing references, expect 48 dots................................................ 
Eliminating duplicate references................................................ 
Snapshot resolved. 
Started HTTP server on port 7000 
Server is ready. 

डिफ़ॉल्ट रूप से, यह JMAP, How to monitor and analyze the garbage collection in 10 ways: पोर्ट 7000 पर http सर्वर तो हम करने के लिए http://localhost:7000/

सौजन्य जाना होगा शुरू