2012-07-30 12 views
5

जैसा कि नव निर्मित वस्तु को नई पीढ़ी के लिए आवंटित किया गया है। क्या यह संभव है कि नव निर्मित वस्तु को पुरानी या कार्यरत पीढ़ी को आवंटित किया जाए? यदि यह है, तो किस आधार पर?क्या पुरानी पीढ़ी में कोई ऑब्जेक्ट बनाया जा सकता है?

+0

आपको चिंता या चिंता करने की ज़रूरत नहीं है कि कचरा कलेक्टर कैसे काम करता है। – Wug

उत्तर

8

देखें "Frequently Asked Questions about Garbage Collection in the HotspotTM JavaTM Virtual Machine":

क्या कभी पुराने पीढ़ी में सीधे आवंटित करने के वस्तुओं?

1.4.1 में दो स्थितियां जहां आवंटन सीधे पुरानी पीढ़ी में हो सकता है।

यदि कोई आवंटन युवा पीढ़ी में विफल रहता है और ऑब्जेक्ट बड़ी सरणी है जिसमें वस्तुओं के लिए कोई संदर्भ नहीं है, तो यह सीधे पुरानी पीढ़ी में आवंटित किया जा सकता है। कुछ चुनिंदा उदाहरणों में, इस रणनीति का उद्देश्य युवा पीढ़ी से आवंटित युवा पीढ़ी के संग्रह से बचने के लिए किया गया था।

एक ध्वज (1.4.2 और बाद में उपलब्ध) एल-एक्सएक्स: प्रीटेनर साइज थ्रेसहोल्ड = जिसे युवा पीढ़ी में आवंटन के आकार को सीमित करने के लिए सेट किया जा सकता है। इस से अधिक आवंटन युवा पीढ़ी में प्रयास नहीं किया जाएगा और इसलिए पुरानी पीढ़ी से आवंटित होगा।

1 के लिए दहलीज आकार 64k शब्द है। के लिए डिफ़ॉल्ट आकार PretenureSizeTreshold 0 है जो कहता है कि किसी भी आकार को युवा पीढ़ी में आवंटित किया जा सकता है।

1.4.2 मामले में 1) 64k शब्द दहलीज वृद्धिशील संग्राहक (-Xincgc) के लिए सच है। डिफ़ॉल्ट कलेक्टर और समवर्ती संग्राहक (-XX: + UseConcMarkSweepGC) के लिए थ्रेसहोल्ड मान बदल दिया गया है ताकि पुरानी पीढ़ी में आवंटित करने का प्रयास केवल तब होता है जब आवंटन का आकार पूरे युवा पीढ़ी से बड़ा होता है (खाली जगह होने पर उपलब्ध स्थान)। यह देखा गया था कि ऐसे मामले थे जहां डिफ़ॉल्ट कलेक्टर और समवर्ती संग्राहक के लिए 1.4.1 रणनीति केवल पूर्ण संग्रह तक पहुंच रही थी (कोई युवा पीढ़ी संग्रह नहीं किया जा रहा था)। हमने माना कि थ्रेसहोल्ड बढ़ाने के लिए पर्याप्त खराब है।

+0

इसे मिला। धन्यवाद दोस्त। :) –

+1

यह बिल्कुल सही नहीं है, यहां चेकआउट करें: http://stackoverflow.com/questions/24618467/size-of-huge-objects- प्रत्यक्ष रूप से- आवंटित-to-old-generation/24618819?noredirect=1#comment38154886_24618819 –

संबंधित मुद्दे