java सिस्टम। एक्सट(0) कॉल करेगा; मुख्य रन कचरा संग्रह के बाहर एक वस्तु से?




garbage-collection exit (3)

मैं एक ऐसी वस्तु का उपयोग करने की योजना बना रहा हूं जिसे पूरे कार्यक्रम से बाहर निकलने के लिए मेरी मुख्य विधि कहा जाता है। ऑब्जेक्ट में ऐसी एक विधि है जो सिर्फ सिस्टम System.exit(0). चलाती है System.exit(0). मेरा सवाल है, क्या यह एक सुरक्षित बात है? अगर मैं System.exit(0) को किसी अन्य ऑब्जेक्ट से चलाता हूं, तो क्या कलेक्शन कलेक्शन पूरी तरह से मेमोरी से पूरे प्रोग्राम को साफ कर देगा, या मुझे कॉलिंग क्लास को मेमोरी से साफ करने में समस्या होगी? मेरा विचार है कि जब से JVM समाप्त हो जाएगा, तो कॉलिंग क्लास कचरा एकत्र होगा, या हो सकता है कि मुझे कॉलिंग क्लास को मेमोरी से साफ़ करना पड़ सकता है क्योंकि ऑब्जेक्ट की स्टैक फ्रेम मुख्य स्टैक फ्रेम से ऊपर है। यह मुख्य रूप से मेरे बारे में मुद्दा जावा के बारे में पर्याप्त नहीं जानता है ... किसी भी मदद के लिए धन्यवाद!


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


System.exit () एक स्थैतिक फ़ंक्शन है इसलिए इसे कोई फर्क नहीं पड़ता कि आप इसे कहां कहते हैं प्रभाव उसी हैं जो जावा आभासी मशीन को समाप्त कर रहे हैं। समाप्ति पर जेवीएम द्वारा उपयोग किए गए किसी भी संसाधन को ओएस पर वापस दिया जाता है।

स्रोत: http://docs.oracle.com/javase/7/docs/api/java/lang/System.html#exit(int)


System.exit(any int) अनुप्रयोग को समाप्त कर देगा। दोनों देशी और ढेर स्मृति को ऑपरेटिंग सिस्टम तक मुक्त किया जाएगा।

यह "जावा" प्रक्रिया को समाप्त करेगा लिनक्स पर, करो

ps -eaf | grep java

System.exit कॉल के बाद की प्रक्रिया को देखने के लिए और आप देखेंगे कि यह निकल चुका है और इसका कोई निशान नहीं है। इसका अर्थ है कि यह प्रक्रिया नहीं चल रही है और कोई संसाधन नहीं है: मेमोरी, सीपीयू को ओएस द्वारा दावा किया जाता है।

जीसी मोर्चे पर, एक स्पष्टीकरण, जीसी किसी भी जावा एप्लिकेशन (प्रक्रिया) का एक अभिन्न अंग है और इसके साथ समाप्त भी होगा। System.exit जीसी को चलाने के लिए या किसी भी सफाई के लिए प्रदान नहीं करेगा।

यदि आप सफाई करना चाहते हैं, तो शटडाउन हुक और सिस्टम। एक्सट () को इस मामले में अनुमति दें, शटडाउन हुक को क्लीनअप के लिए अनुमति देगी जैसे थ्रेड्स को बंद करना आदि।





garbage