Java Flight Recorder
कम overhead वाली profiling
Java Flight Recorder, CoddyKit पर Java Academy का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Java Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Java Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
JFR क्या है?
Java फ़्लाइट रिकॉर्डर (JFR) JVM में सीधे निर्मित प्रोफ़ाइलिंग और घटना-संग्रह तंत्र है।
यह रनटाइम की विस्तृत घटनाएँ — विधि के नमूने, आवंटन, कचरा संग्रहण, लॉक और IO — बहुत कम अतिरिक्त भार के साथ एक द्विआधारी .jfr फ़ाइल में रिकॉर्ड करता है। यह JDK के साथ आता है; किसी अतिरिक्त एजेंट की आवश्यकता नहीं होती।
कम अतिरिक्त भार क्यों महत्वपूर्ण है
पारंपरिक इंस्ट्रुमेंटेशन-आधारित प्रोफ़ाइलर किसी अनुप्रयोग को 2 गुना या उससे अधिक धीमा कर सकते हैं, जिससे वे समय-माप ही विकृत हो जाते हैं जिन्हें आप जानना चाहते हैं।
JFR को उत्पादन वातावरण में चलने के लिए बनाया गया है और इसका अतिरिक्त भार आम तौर पर लगभग 1% होता है। इसका अर्थ है कि आप इसे चालू छोड़ सकते हैं और वास्तविक घटना होने पर रिकॉर्डिंग ले सकते हैं, केवल प्रयोगशाला में नहीं।
प्रारंभ के समय रिकॉर्डिंग शुरू करना
अनुप्रयोग शुरू करते समय JVM विकल्प से JFR सक्षम करें:
-XX:StartFlightRecording=duration=60s,filename=app.jfr
यह 60 सेकंड की घटनाएँ रिकॉर्ड करता है और फिर उन्हें app.jfr में लिखता है। आप ऐसी रिकॉर्डिंग भी शुरू कर सकते हैं, जो JVM के बाहर निकलने तक चलती रहे।
जेसीएमडी से नियंत्रण
आप चल रहे JVM पर jcmd का उपयोग करके रिकॉर्डिंग शुरू, बंद और डंप भी कर सकते हैं:
jcmd <pid> JFR.start name=rec settings=profilejcmd <pid> JFR.dump name=rec filename=out.jfrjcmd <pid> JFR.stop name=rec
जो प्रक्रिया पहले से गलत व्यवहार कर रही हो, उससे तुरंत एक स्नैपशॉट लेने के लिए यह आदर्श है।
विन्यास: मूल बनाम प्रोफ़ाइल
JFR में दो अंतर्निर्मित विन्यास आते हैं:
- मूल — न्यूनतम अतिरिक्त भार, लगातार उत्पादन उपयोग के लिए सुरक्षित।
- प्रोफ़ाइल — अधिक विस्तृत नमूना-संग्रह, थोड़ा अधिक खर्च, केंद्रित जाँच के लिए।
settings=profile से चुनाव करें। आप अलग-अलग घटनाओं को समायोजित करने के लिए अपना कस्टम .jfc विन्यास भी लिख सकते हैं।
JFR क्या रिकॉर्ड करता है
JFR घटनाओं का एक समृद्ध समूह रिकॉर्ड करता है, जिनमें शामिल हैं:
- निष्पादन के नमूने — CPU का समय कहाँ जा रहा है।
- वस्तु आवंटन और TLAB गतिविधि।
- कचरा संग्रहण के विराम।
- लॉक पर प्रतिस्पर्धा (
jdk.JavaMonitorWait)। - फ़ाइल और सॉकेट IO, थ्रेड का पार्क होना और अपवाद।
हर घटना में समय-मुहर, अवधि और कॉल-स्टैक का पता होता है।
अनुकूलित घटनाएँ
व्यावसायिक तर्क का समय मापने के लिए आप अपनी JFR घटनाएँ परिभाषित कर सकते हैं। jdk.jfr.Event का विस्तार करें, उसमें एनोटेशन लगाएँ, फिर कार्य के चारों ओर begin() / commit() का उपयोग करें।
यह JFR API का वह भाग है, जो अलग से चलने वाले अनुप्रयोगों के लिए सुविधाजनक है। वास्तविक रिकॉर्डिंग के लिए अभी भी JVM विकल्पों की आवश्यकता होती है, लेकिन घटना-वर्ग किसी भी JDK पर संकलित और चल सकता है।
import jdk.jfr.Event;
import jdk.jfr.Label;
public class Main {
@Label("Order Processing")
static class OrderEvent extends Event {
@Label("Order Id") int orderId;
}
public static void main(String[] args) {
OrderEvent e = new OrderEvent();
e.orderId = 42;
e.begin();
// ... do the work being measured ...
e.commit();
System.out.println("Custom JFR event committed for order " + e.orderId);
}
}सतत रिकॉर्डिंग
लंबे समय तक चलने वाली सेवाओं के लिए सीमित आकार या आयु वाली सतत रिकॉर्डिंग चलाएँ, जिसे रिंग बफ़र कहा जाता है।
नई घटनाएँ आने पर पुरानी घटनाएँ हटा दी जाती हैं, इसलिए डिस्क का उपयोग सीमित रहता है। घटना होने पर आप बफ़र डंप कर सकते हैं और उसके ठीक पहले के मिनटों का डेटा तुरंत पा सकते हैं।
बाहर निकलते समय डंप करना
रिकॉर्डिंग-प्रारंभ विकल्प में dumponexit=true जोड़ें; JVM बंद होने पर JFR बफ़र लिख देगा।
बफ़र का आकार निर्धारित करने के लिए इसे -XX:FlightRecorderOptions के साथ मिलाएँ। इससे यह सुनिश्चित होता है कि बंद होने वाली प्रक्रिया से भी डेटा रिकॉर्ड हो जाए।
फ़ाइल पढ़ना
.jfr फ़ाइल द्विआधारी होती है। आप इसका दृश्य विश्लेषण JDK मिशन कंट्रोल में कर सकते हैं (अगले पाठ में), या jdk.jfr.consumer API और RecordingFile के माध्यम से प्रोग्राम द्वारा कर सकते हैं।
त्वरित खोज के लिए कमांड-पंक्ति का jfr print app.jfr घटनाओं को पाठ के रूप में भी निकाल सकता है।
घटनाओं को सीधे प्रवाहित करना
JDK 14 से JFR, jdk.jfr.consumer.RecordingStream API के माध्यम से घटना-प्रवाह का समर्थन करता है।
फ़ाइल डंप करके बाद में खोलने के बजाय, आप घटनाओं के घटित होते ही उनकी सदस्यता लेते हैं और वास्तविक समय में प्रतिक्रिया देते हैं — उदाहरण के लिए, जब कचरा संग्रहण के विराम किसी सीमा से अधिक हों तो चेतावनी देना। इससे JFR केवल घटना-पश्चात विश्लेषण का उपकरण न रहकर, सीधे निगरानी का स्रोत बन जाता है।
त्वरित जाँच
JFR को उत्पादन वातावरण में लगातार चलाकर छोड़ देने का मुख्य कारण क्या है?
पुनरावलोकन
JFR, JVM का अंतर्निर्मित उड़ान-डेटा रिकॉर्डर है:
.jfrफ़ाइलों में कम अतिरिक्त भार के साथ, उत्पादन के लिए सुरक्षित घटना-संग्रह।-XX:StartFlightRecordingयाjcmd JFR.startसे शुरू करें।- मूल या प्रोफ़ाइल विन्यास चुनें; अनुकूलित घटनाएँ परिभाषित करें।
- सतत रिंग-बफ़र रिकॉर्डिंग और
dumponexitका उपयोग करें। - अगले पाठ में JDK मिशन कंट्रोल से विश्लेषण करें।
एआई शिक्षक के साथ Java सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 104
- पाठ
- 374
अक्सर पूछे जाने वाले प्रश्न
क्या “Java Flight Recorder” पाठ निःशुल्क है?
हाँ—“Java Flight Recorder” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Java Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Java Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“Java Flight Recorder” में मैं क्या सीखूँगा?
कम overhead वाली profiling आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Java Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Java Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Java Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।
“Java Flight Recorder” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस Java Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर Java Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- Bottlenecks पहचानना
- Java Flight Recorder
- JDK Mission Control से विश्लेषण
- सामान्य JVM Tuning Flags