GC Tuning Flags और JVisualVM Profiling
heap size flags सेट करें, GC logging सक्षम करें और live app में heap usage profile करने के लिए JVisualVM का उपयोग करें।
GC Tuning Flags और JVisualVM Profiling, CoddyKit पर Java Academy का एक निःशुल्क पाठ है। यह 4 में से 4वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Java Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Java Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
कचरा-संग्रहण को समायोजित क्यों करें?
डिफ़ॉल्ट कचरा-संग्रहण सेटिंग कई ऐप के लिए अच्छी तरह काम करती हैं, लेकिन अधिक थ्रूपुट या कम विलंबता वाले कार्यभार में समायोजन की आवश्यकता हो सकती है। पहले माप लें — बिना जाँच के कभी समायोजन न करें।
हीप आकार के फ़्लैग
प्रारंभिक (-Xms) और अधिकतम (-Xmx) हीप सेट करें। प्रोडक्शन में दोनों को समान रखें, ताकि गतिशील आकार-परिवर्तन के कारण होने वाले ठहराव से बचा जा सके। उपलब्ध RAM के 60–70% से शुरुआत करें।
// Example production flags:
java -Xms2g -Xmx2g -XX:+UseG1GC MyApp
// Avoid:
java -Xmx8g MyApp // initial = 256m, max = 8g → resizing pausesयुवा पीढ़ी का आकार
अधिक आवंटन वाले ऐप में Minor GC की आवृत्ति घटाने के लिए Young Gen का आकार बढ़ाएँ। -Xmn या -XX:NewRatio (पुरानी:युवा पीढ़ी का अनुपात, डिफ़ॉल्ट 2) का उपयोग करें।
// Set Young Gen to 1 GB:
java -Xmx4g -Xmn1g MyApp
// Or via ratio:
java -Xmx4g -XX:NewRatio=3 MyApp // 3GB old, 1GB youngG1 ठहराव लक्ष्य
G1 को अपना इच्छित अधिकतम ठहराव बताने के लिए -XX:MaxGCPauseMillis सेट करें। G1 इस लक्ष्य को पूरा करने के लिए अपना संग्रह-समुच्चय समायोजित करता है — लेकिन यह लक्ष्य है, कठोर गारंटी नहीं।
java -XX:+UseG1GC -XX:MaxGCPauseMillis=100 -Xmx8g MyApp
// G1 will try to keep pauses under 100 msकचरा-संग्रहण थ्रेड की संख्या
-XX:ParallelGCThreads (विश्व-स्थगन थ्रेड) और -XX:ConcGCThreads (G1/ZGC के समवर्ती थ्रेड) से समानांतरता नियंत्रित करें।
// On an 8-core machine:
java -XX:+UseG1GC -XX:ParallelGCThreads=8 -XX:ConcGCThreads=2 MyAppकचरा-संग्रहण लॉगिंग सक्षम करना (JVM 9+)
कचरा-संग्रहण घटनाएँ कैप्चर करने के लिए Xlog फ़्रेमवर्क का उपयोग करें। लंबे ठहराव, आवंटन की बाढ़ और प्रोमोशन विफलताओं का पता लगाने के लिए लॉग का ऑफ़लाइन विश्लेषण करें।
java -Xlog:gc*:file=gc.log:time,uptime,level,tags:filecount=5,filesize=20m MyAppबहुत बड़े ऑब्जेक्ट की चेतावनी
G1 क्षेत्र के 50% से बड़े ऑब्जेक्ट "बहुत बड़े" माने जाते हैं और Young Gen को छोड़कर सीधे Old Gen में चले जाते हैं। इससे विखंडन हो सकता है। बड़े ऑब्जेक्ट छोटे रखें या क्षेत्र का आकार बढ़ाएँ।
// Increase G1 region size (range: 1 MB to 32 MB, must be power of 2):
java -XX:+UseG1GC -XX:G1HeapRegionSize=16m -Xmx16g MyAppJVisualVM का परिचय
JDK 8 के साथ शामिल और नए JDK के लिए डाउनलोड किए जा सकने वाला JVisualVM स्थानीय और दूरस्थ JVM प्रक्रियाओं के हीप, कचरा-संग्रहण, CPU और थ्रेड की निगरानी के लिए GUI प्रदान करता है।
दूरस्थ JVM से कनेक्ट करना
JVisualVM को दूरस्थ रूप से कनेक्ट करने के लिए सर्वर पर JMX सक्षम करें। ये फ़्लैग लक्ष्य JVM के स्टार्टअप में जोड़ें।
// Remote JVM flags:
java -Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=9090 \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.ssl=false \
MyAppJVisualVM से हीप डंप
JVisualVM में प्रक्रिया पर दायाँ-क्लिक करें → "Heap Dump"। डंप सक्रिय ऑब्जेक्ट, बनाए रखे गए आकार और संदर्भ दिखाता है। SQL-जैसे सिंटैक्स से डंप पर क्वेरी चलाने के लिए "OQL Console" का उपयोग करें।
JVisualVM से CPU प्रोफाइलिंग
Profiler टैब पर जाएँ और "CPU" पर क्लिक करें। JVisualVM विधियों में इंस्ट्रुमेंटेशन जोड़ता है और अधिक सक्रिय कॉल स्टैक दिखाता है। सबसे अधिक समय लेने वाली विधियाँ देखने के लिए प्रोफाइलर रोकें।
Java Flight Recorder और JVisualVM की तुलना
JFR का अतिरिक्त भार कम (~1–2%) होता है और यह प्रोडक्शन के लिए उपयुक्त है। प्रोफाइलिंग के साथ JVisualVM का अतिरिक्त भार अधिक होता है और यह विकास के लिए बेहतर है। प्रोडक्शन में JFR और विकास संबंधी डीबगिंग के लिए JVisualVM का उपयोग करें।
त्वरित जाँच
G1 के लिए अधिकतम कचरा-संग्रहण ठहराव का लक्ष्य कौन-सा फ़्लैग सेट करता है?
पुनरावृत्ति
प्रोडक्शन में -Xms == -Xmx सेट करें। G1 के लिए -XX:MaxGCPauseMillis समायोजित करें। Xlog से कचरा-संग्रहण लॉगिंग सक्षम करें। विकास संबंधी डीबगिंग के लिए JVisualVM और प्रोडक्शन प्रोफाइलिंग के लिए JFR का उपयोग करें।
एआई शिक्षक के साथ Java सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 104
- पाठ
- 374
अक्सर पूछे जाने वाले प्रश्न
क्या “GC Tuning Flags और JVisualVM Profiling” पाठ निःशुल्क है?
हाँ—“GC Tuning Flags और JVisualVM Profiling” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Java Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Java Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“GC Tuning Flags और JVisualVM Profiling” में मैं क्या सीखूँगा?
heap size flags सेट करें, GC logging सक्षम करें और live app में heap usage profile करने के लिए JVisualVM का उपयोग करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Java Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Java Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Java Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 4वाँ पाठ है।
“GC Tuning Flags और JVisualVM Profiling” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस Java Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर Java Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- JVM Heap Regions और Object Lifecycle
- GC Algorithms: Serial, G1, ZGC, Shenandoah
- Memory Leaks पहचानना और ठीक करना
- GC Tuning Flags और JVisualVM Profiling