2012-03-29 5 views
19

कक्षा में लोड होने और जेवीएम में नष्ट होने पर मैं ट्रैक कैसे रखूं? क्या कोई कॉलबैक विधि है जो जेवीएम द्वारा उजागर की जाती है?जेवीएम में कक्षा कब लोड और नष्ट होने पर ट्रैक कैसे करें?

+0

आप यहां दो प्रश्न पूछ रहे हैं। आप वास्तव में क्या सीखने की कोशिश कर रहे हैं, या पूरा करने की कोशिश कर रहे हैं? एक बार जब आप इसे समझ लेंगे, तो उस उत्तर को स्वीकार करें जिसने आपको सबसे ज्यादा मदद की है। – Frans

उत्तर

0

आप कक्षा लोडिंग का पता लगाने के लिए स्थिर ब्लॉक का उपयोग कर सकते हैं लेकिन आप कक्षा अनलोडिंग का पता नहीं लगा सकते हैं। जावा में सिस्टम क्लासलोडर के माध्यम से लोड किए गए सभी वर्गों को कभी भी अनलोड नहीं किया जाएगा और अन्य क्लासलोडर के माध्यम से लोड किए गए सभी वर्ग केवल तभी लोड किए जाएंगे जब क्लासलोडर अनलोड हो।

static{ 

     //execute when the class will be loaded 

    } 
5

आप जावा में जोड़ सकते हैं देखने के लिए कि किस वर्ग के माध्यम से भरी हुई है चुनता है:

java -verbose:class 

नष्ट वर्ग के बारे में, मुझे यकीन है कि नहीं हूँ।

0

क्या आप यह जानकारी अपने आवेदन में चाहते हैं या आप इसे बाहर से ही विश्लेषण करना चाहते हैं? बाद के मामले में आप इसके लिए VisualVM का उपयोग कर सकते हैं। शायद आपका प्रश्न इस से संबंधित है: Loaded classes in VisualVM

7

आप अपनी जावा प्रक्रिया में command line option-verbose:class जोड़ सकते हैं, यह लोड होने वाली प्रत्येक कक्षा के बारे में जानकारी प्रदर्शित करेगा।

0

आप स्थिर रचनाकार में कक्षा के निर्माण को ट्रैक कर सकते हैं। और जहां तक ​​मेरा संबंध है, आप इसे विनाश को ट्रैक नहीं कर सकते। कक्षाएं केवल अनलोड हो जाती हैं जब जीसी क्लासलोडर को एकत्र करता है जिसका उपयोग कक्षाओं को लोड करने के लिए किया जाता था।
आप भी इस पढ़ने में रुचि हो सकती है: another question on classloaders at StackOverflow

2

हैं JRockit JVM उपयोग करने के साथ ठीक कर रहे हैं, तो आप नीचे API का उपयोग, जो आप तरीकों को कालबैक दे देंगे जब एक वर्ग भरी हुई है और वर्ग उतार दिया जाता है कर सकते हैं।
JVM कक्षा पर एक नज़र डालें, जिसमें से हम getClassLibrary() विधि का उपयोग करना चाहते हैं।
classLibrary वस्तु पर हम किसी घटना के समय वर्ग के नाम आदि

21

देता है आप एक सूर्य/Oracle JVM का उपयोग कर रहे हैं, तो आप TraceClassLoading और TraceClassUnloading विकल्प इस्तेमाल कर सकते हैं classloading के लिए श्रोताओं रजिस्टर कर सकते हैं। क्या विकल्प आपके JVM का समर्थन करता है देखने के लिए निम्नलिखित का उपयोग करें:

java -XX:+AggressiveOpts -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+PrintFlagsFinal -version 

तो इन विकल्पों का समर्थन कर रहे, -XX:+TraceClassLoading -XX:+TraceClassUnloading का उपयोग कर अपने जावा अनुप्रयोग चलाते हैं। आपको संदेश देखना चाहिए:

[Loaded ... from ...] 
[Unloading class ...] 
संबंधित मुद्दे