"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > मेमोरी आवंटन को देखने के लिए जावा एप्सिलॉनजीसी का उपयोग करना।

मेमोरी आवंटन को देखने के लिए जावा एप्सिलॉनजीसी का उपयोग करना।

2024-11-08 को प्रकाशित
ब्राउज़ करें:869

Using Java EpsilonGC to look at memory allocation.

इस लेख में संदर्भित कोड एप्सिलॉन जीसी के संबंध में ओरेकल ब्लॉग पर उपलब्ध नमूना कोड से लिया गया है।

इस लेख में, हम जावा कचरा संग्रह (जीसी) में एक विशेष रूप से दिलचस्प विकल्प तलाशते हैं जिसे एप्सिलॉन जीसी के नाम से जाना जाता है। यह कचरा संग्रहण एल्गोरिदम अपनी विशिष्ट विशेषता के लिए उल्लेखनीय है: यह कोई कचरा संग्रहण नहीं करता है। एप्सिलॉन कचरा संग्रहकर्ता (जीसी) को जेडीके 11 में शामिल किया गया था।

लेकिन कचरा संग्रहकर्ता का क्या उपयोग है यदि वह कचरा एकत्र नहीं कर रहा है? (मुफ्तखोर हुंह!!)

नहीं, यह वास्तव में काफी उपयोगी है, ओरेकल ब्लॉग द्वारा प्रदान किया गया एक ऐसा उपयोगकेस, जिसे मैंने और अधिक उपयोगी बनाने के लिए थोड़ा बढ़ाया है।

अधिक जानकारी के लिए, कृपया मूल ब्लॉग पोस्ट देखें:
https://blogs.oracle.com/javamagazine/post/epsilon-the-jdks-do-nothing-garbage-collector

उपयोगकेस: एप्सिलॉन जीसी उन डेवलपर्स के लिए फायदेमंद है, जिन्हें प्रोफाइलिंग टूल की सहायता के बिना कोड के एक विशेष खंड के लिए मेमोरी आवंटन का आकलन करने की आवश्यकता होती है।

प्राथमिक चुनौती पारंपरिक कचरा संग्रहकर्ता वस्तुओं को लगातार साफ करके सटीक मेमोरी उपयोग मेट्रिक्स को अस्पष्ट कर सकते हैं। यह हस्तक्षेप आपके कोड की वास्तविक मेमोरी खपत का पता लगाना कठिन बना देता है।

एप्सिलॉन जीसी एक गैर-संग्राहक के रूप में कार्य करके इस समस्या का समाधान करता है। हालांकि यह एक कचरा संग्रहण एल्गोरिदम नहीं है, यह किसी भी कचरा संग्रह को करने से परहेज करके मेमोरी आवंटन को समझने के लिए एक उपकरण के रूप में कार्य करता है, जिससे मेमोरी उपयोग की स्पष्ट तस्वीर मिलती है।

नोट: यह जानना महत्वपूर्ण है कि चूंकि एप्सिलॉन जीसी मेमोरी को पुनः प्राप्त नहीं करता है, इसलिए अत्यधिक आवंटन से जेवीएम में आउटऑफमेमरी एरर (ओओएम) हो सकता है।

नीचे नमूना कोड है जिसका उपयोग एप्सिलॉन जीसी की प्रभावकारिता को प्रदर्शित करने के लिए किया जाएगा:

public class EpsilonDemo {

    public static String formatSize(long v) {
        if (v 



अपेक्षा:
कोड 80MB बाइट प्रकार की ऑब्जेक्ट आवंटित करता है। जब हम कोड निष्पादित करते हैं तो हमें प्रिंट स्टेटमेंट के साथ इसे देखने में सक्षम होना चाहिए।

अब संकलित संस्करण को EpsilonGC के साथ/बिना चलाने के लिए:

  1. G1GC के साथ चल रहा है:
java -Xms100m -Xmx100m -XX: UseG1GC  EpsilonDemo
Starting allocations...
*** Free MEM = 102.2 MB
Completed successfully
*** Free MEM = 74.2 MB

इसलिए G1GC के साथ हमें 28 एमबी उपयोग की गलत आवंटन तस्वीर दिखाई देती है

  1. एप्सिलॉनजीसी के साथ चल रहा है:
java -Xms100m -Xmx100m -XX: UnlockExperimentalVMOptions -XX: UseEpsilonGC EpsilonDemo
[0.004s][warning][gc,init] Consider enabling -XX: AlwaysPreTouch to avoid memory commit hiccups
Starting allocations...
*** Free MEM = 99.4 MB
Completed successfully
*** Free MEM = 18.7 MB 

यहां आप 80.7 एमबी उपयोग स्पष्ट रूप से देख सकते हैं

मुझे आशा है कि इससे आपको यह देखने में मदद मिलेगी कि एप्सिलॉनजीसी आपके कोड में मेमोरी उपयोग पैटर्न का पता लगाने के लिए कैसे बहुत उपयोगी हो सकता है। प्रोत्साहित करना! ?

विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/vishalendu/using-java-episilongc-to-look-at-memory-allocation-50bi?1 यदि कोई उल्लंघन है, तो कृपया हटाने के लिए स्टडी_गोलंग@163.com पर संपर्क करें। यह
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3