c# - Static Methods Memory Consumption -
मेरे पास निम्न विधियों के साथ निम्नलिखित वर्ग हैं:
सार्वजनिक वर्ग फ़ू {सार्वजनिक स्ट्रिंग एक {get; set;} सार्वजनिक स्थिर Foo New (string a) {Foo newFoo = new Foo (); NewFoo.A = ए; नई वापसी करें; }} सार्वजनिक वर्ग बार {सार्वजनिक शून्य someMethod () {... Foo anotherFoo = Foo.New ("a"); ....}} यदि बार क्लास उप कोड के उपयोग की प्रक्रिया के दौरान फू बनाता है, तो फ़ू कभी भी गुंजाइश के बाहर जाएंगे और कचरा एकत्रित करेगा या फिर फू (क्योंकि यह स्थैतिक विधि) चर newFoo के लिए एक संदर्भ जारी रखने के लिए और इसलिए अन्य Foo कभी नहीं होगा बाहर से गुंजाइश?
स्थिर तरीकों की उपस्थिति जीसी के लिए किसी ऑब्जेक्ट की पात्रता को प्रभावित नहीं करती है, केवल उस ऑब्जेक्ट के संदर्भ में आपके मामले में anotherFoo एकमात्र संदर्भ होगा। स्टैक्ड बंद करते समय विधि > >
निष्पादन स्टैक से गैर स्थैतिक तरीकों के समान रखा जाएगा।
anotherFoo पीछे अंतर्निहित ऑब्जेक्ट जीसी के लिए योग्य हो जाएगा जब SomeMethod रिटर्न (अच्छी तरह से) , कंपाइलर अधिक आक्रामक है और इसे जीसी-सक्षम बना सकते हैं जब anotherFoo कोड में अब उपयोग नहीं किया जाता है)।
Comments
Post a Comment