में वृद्धि होगी मैं WinForm एप्लिकेशन के स्मृति उपयोग को कम करने की कोशिश कर रहा हूं।बस खुले और बंद करें संवाद Winform स्मृति उपयोग
आवेदन में एक मुख्य रूप और एक सेटिंग फॉर्म है। जब "सेटिंग" बटन दबाया गया था, तो सेटिंग फ़ॉर्म एक मोडल फॉर्म के रूप में पॉपअप करेगा, सेटिंग फ़ॉर्म APP.config डेटा को कॉन्फ़िगरेशन फ़ाइल से लोड करेगा और उन्हें हैशटेबल के रूप में स्मृति में पढ़ेगा। सेटिंग फॉर्म बंद होने के बाद, यह Windows.Forms.Form से निहित विधि को कॉल करेगा। निपटान विधि हैशटेबल्स और app.config ऑब्जेक्ट को शून्य पर सेट करने के समान सरल है। modalform रूप
दिखाएँ SettingForm:
private void btnSettings_Click(object sender, EventArgs e)
{
frmConfig form = new frmConfig();
form.StartPosition = FormStartPosition.CenterScreen;
//MessageBox.Show(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase));
form.ShowDialog(this);
form.Dispose();
}
निपटान विधि:
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
// Release managed resources
Logger.Verbose("Disposing SettingForm");
mySetting = null;
testFtp = null;
}
base.Dispose(disposing);
}
नोट: mySetting सभी app.config Hashtable में लोड किया गया डेटा के साथ कक्षा का एक उदाहरण है, और testFtp ftp फ़ंक्शन के लिए एक कस्टम ऑब्जेक्ट है। मैं इस दो वर्ग के लिए निपटान विधि को लागू करने और
mySetting.Dispose();
testFtp.Dispose();
का उपयोग कर के बजाय उन्हें सेट शून्य पर करना चाहिए, के रूप में वे themself/अप्रबंधित संसाधनों के साथ सौदा कर रहे हैं?
लेकिन प्रत्येक बार "सेटिंग" बटन दबाएं और सेटिंग फॉर्म को बंद करें कुछ सैकड़ों के लिए निजी बाइट बढ़ाएगा मेमोरी लीक? मैं इससे कैसे छुटकारा पा सकता हूं?
यदि आप कम से कम अपने कुछ कोड पोस्ट करते हैं, तो यह मदद करेगा, विशेष रूप से वह कोड जहां आप सामान्य रूप से फॉर्म दिखाते हैं और सेटिंग फ़ॉर्म से आपकी पूरी निपटान विधि दिखाते हैं। – MusiGenesis
इसके अलावा, एक साधारण लॉगिंग या डीबग.प्रिंट कॉल या निपटान विधि के अंदर जो भी हो, यह पुष्टि करेगा कि वास्तव में इसे कभी भी बुलाया जा रहा है या नहीं। – MusiGenesis
'null' के संदर्भ को सेट करना स्मृति को मुक्त नहीं करता है। –