OpenJDK 8 - DGC

इंटरफ़ेस डीजीसी




openjdk

इंटरफ़ेस डीजीसी

सभी सुपरफिनफेसेस:
Remote
public interface DGC
extends Remote

DGC अमूर्त का उपयोग वितरित कचरा संग्रह एल्गोरिथ्म के सर्वर पक्ष के लिए किया जाता है। इस इंटरफ़ेस में दो विधियाँ शामिल हैं: गंदे और साफ। जब एक दूरस्थ संदर्भ क्लाइंट में अनमर्ष हो जाता है (क्लाइंट को उसके VMID द्वारा इंगित किया जाता है) तो कॉल किया जाता है। जब क्लाइंट में रिमोट रेफरेंस मौजूद नहीं होता है तब एक संबंधित क्लीन कॉल किया जाता है। एक असफल मैली कॉल को एक मजबूत क्लीन कॉल शेड्यूल करना चाहिए ताकि वितरित कचरा संग्रहकर्ता द्वारा ऑर्डर से प्राप्त भविष्य की कॉल का पता लगाने के लिए कॉल के अनुक्रम संख्या को बनाए रखा जा सके। एक दूरस्थ वस्तु का संदर्भ ग्राहक द्वारा संदर्भ को पकड़े हुए समय के लिए पट्टे पर दिया जाता है। गंदे कॉल प्राप्त होने पर पट्टे की अवधि शुरू होती है। यह पट्टों को नवीनीकृत करने के लिए ग्राहक की जिम्मेदारी है, अतिरिक्त गंदे कॉल करके, इस तरह के पट्टों की समय सीमा समाप्त होने से पहले इसे दूर रखता है। यदि क्लाइंट समाप्त होने से पहले पट्टे को नवीनीकृत नहीं करता है, तो वितरित कचरा कलेक्टर मानता है कि दूरस्थ वस्तु अब उस क्लाइंट द्वारा संदर्भित नहीं है।

तरीके

गंदा

Lease dirty(ObjID[] ids,
            long sequenceNum,
            Lease lease)
     throws RemoteException

मैसेज कॉल रिक्वेस्ट 'आइडीएस' में निहित ऑब्जेक्ट आइडेंटीफायर से जुड़े रिमोट ऑब्जेक्ट रेफरेंस के लिए लीज देता है। 'लीज़' में एक ग्राहक का अद्वितीय VM पहचानकर्ता (VMID) और एक अनुरोधित लीज़ अवधि शामिल है। स्थानीय वीएम में निर्यात की गई प्रत्येक दूरस्थ वस्तु के लिए, कचरा संग्रहकर्ता एक संदर्भ सूची रखता है-ग्राहकों की एक सूची जो इसे संदर्भित करता है। यदि लीज़ प्रदान की जाती है, तो कचरा संग्रहकर्ता ग्राहक की VMID को 'id' में इंगित प्रत्येक दूरस्थ ऑब्जेक्ट के लिए संदर्भ सूची में जोड़ता है। 'अनुक्रमनम' पैरामीटर एक अनुक्रम संख्या है जिसका उपयोग कचरा कलेक्टर को देर से कॉल का पता लगाने और त्यागने के लिए किया जाता है। कचरा कलेक्टर को प्रत्येक बाद की कॉल के लिए अनुक्रम संख्या हमेशा बढ़नी चाहिए। कुछ क्लाइंट VMID उत्पन्न करने में असमर्थ होते हैं, क्योंकि VMID एक सार्वभौमिक विशिष्ट पहचानकर्ता होता है जिसमें एक मेजबान पता होता है जिसे कुछ ग्राहक सुरक्षा प्रतिबंधों के कारण प्राप्त करने में असमर्थ होते हैं। इस स्थिति में, एक क्लाइंट null के VMID का उपयोग कर सकता है, और वितरित कचरा कलेक्टर क्लाइंट के लिए VMID असाइन करेगा। गंदा कॉल एक लीज ऑब्जेक्ट देता है जिसमें VMID का उपयोग किया जाता है और दूरस्थ संदर्भ के लिए दी गई लीज अवधि (एक सर्वर क्लाइंट अनुरोधों की तुलना में एक छोटी लीज अवधि देने का निर्णय ले सकता है)। क्लाइंट को दूरस्थ ऑब्जेक्ट संदर्भ ड्रॉप करने पर संगत क्लीन कॉल करने के लिए VMID कचरा कलेक्टर का उपयोग करने के लिए एक क्लाइंट का उपयोग करना चाहिए। एक ग्राहक वीएम को केवल वीएम में संदर्भित प्रत्येक दूरस्थ संदर्भ के लिए एक प्रारंभिक गंदा कॉल करने की आवश्यकता है (भले ही इसमें एक ही दूरस्थ ऑब्जेक्ट के कई संदर्भ हों)। ऐसे पट्टों की समय सीमा समाप्त होने से पहले ग्राहक को दूरस्थ संदर्भों पर पट्टों को नवीनीकृत करने के लिए एक गंदा कॉल करना होगा। जब क्लाइंट के पास अब किसी विशिष्ट दूरस्थ ऑब्जेक्ट का कोई संदर्भ नहीं है, तो उसे संदर्भ से जुड़ी ऑब्जेक्ट आईडी के लिए एक क्लीन कॉल शेड्यूल करना होगा।

पैरामीटर:
ids - क्लाइंट को कॉल करके संदर्भित के रूप में चिह्नित करने के लिए वस्तुओं की आईडी
क्रमांक - क्रम संख्या
lease - अनुरोधित पट्टा
यह दिखाता है:
पट्टे पर दिया गया
फेंकता:
RemoteException - अगर गंदा कॉल विफल हो जाता है

स्वच्छ

void clean(ObjID[] ids,
           long sequenceNum,
           VMID vmid,
           boolean strong)
    throws RemoteException

क्लीन कॉल 'आईडी' में इंगित प्रत्येक दूरस्थ वस्तु के संदर्भ सूची से 'vmid' को हटा देता है। अनुक्रम संख्या का उपयोग देर से साफ कॉल का पता लगाने के लिए किया जाता है। यदि तर्क 'मजबूत' सत्य है, तो क्लीन कॉल एक विफल गंदे कॉल का परिणाम है, इस प्रकार क्लाइंट 'vmid' के अनुक्रम क्रम को याद रखने की आवश्यकता है।

पैरामीटर:
ids - क्लाइंट को कॉल करके अपरिचित के रूप में चिह्नित करने के लिए वस्तुओं की आईडी
क्रमांक - क्रम संख्या
vmid - क्लाइंट vmid
strong - 'मजबूत' स्वच्छ कॉल करें
फेंकता:
RemoteException - अगर क्लीन कॉल विफल होती है