/ / VisualVM प्रोफाइलिंग सत्र के परिणाम की व्याख्या - जावा, प्रोफाइलिंग, ढेर, visualvm

VisualVM प्रोफाइलिंग सत्र के परिणाम की व्याख्या - जावा, प्रोफाइलिंग, ढेर, visualvm

मेरे पास एक ऐसा एप्लिकेशन है जो SQL डेटा डेटाबेस में कुछ डेटा (80k tuples में लगभग 15 एमबी) लिखता है इस मैक ओएस एक्स पर जेडीबीसी-ड्राइवर। यह लेनदेन का उपयोग करके किया जाता है, जिनमें से सबसे बड़ा एक टेबल में लगभग 45k आवेषण होता है। आवेदन प्रोफाइल करते समय, कई चीजें अजीब लगती हैं:

  1. अगर मैं शुरुआत में आवेदन को रोकता हूं System.in.read(), प्रक्रिया द्वारा आवंटित स्मृति धीरे-धीरे बढ़ती रहती है। ऐसा क्यों है?
  2. जब एप्लिकेशन चलता है, तो उपयोग की जाने वाली ढेर स्थान हमेशा VisualVM मॉनीटर में लगभग 80 एमबी पर होती है। हालांकि, स्मृति उपयोग को प्रोफाइल करते समय, मुझे लगभग 10 एमबी मिलती है। क्या कोई इस अंतर को समझा सकता है?

किसी भी मदद के लिए धन्यवाद।

उत्तर:

जवाब के लिए 2 № 1

स्मृति उपयोग में जिग्स पैटर्न आरएमआई पर प्रसारित होने वाले प्रोफाइलिंग परिणामों के कारण है। यह वास्तव में आपके प्रोग्राम द्वारा वास्तविक स्मृति आवंटन से फ़िल्टर करने के लिए बहुत भ्रमित और परेशान है। देख VisualVM प्रोफाइलिंग प्रदूषण परिणाम है इन्हें फ़िल्टर करने का तरीका जानने के लिए :-)


जवाब के लिए 0 № 2

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

समस्या संख्या दो के लिए, यह कहना मुश्किल हैअधिक जानकारी के बिना निश्चित रूप से। जब आप प्रोफाइलिंग बदलते हैं तो आम तौर पर एप्लिकेशन बीहाइवर अलग होने की अपेक्षा करता है क्योंकि समय बदलने वाली विंडो बदलती है, एप्लिकेशन को समय रिपोर्टिंग डेटा खर्च करना पड़ता है तथा अपना सामान्य काम आदि यह हो सकता है कि जब प्रोफाइलिंग चालू हो, तो अधिक स्मृति आवंटन होता है क्योंकि आपका कोड अब वाद्य यंत्रित होता है, और यह एक जीसी ट्रिगर करता है जो ढेर के उपयोग को कम करता है। प्रोफाइलिंग बंद होने पर आपके एप्लिकेशन में System.gc () करने का प्रयास करें और हमें बताएं कि आपकी ढेर उपयोग रिपोर्ट क्या है।