मैं एक छोटे से आवेदन है कि मैं अभी चल रहा था है और मैं अगर मैं इसे किसी भी मेमोरी लीक की जांच करना चाहता था इसलिए मैं कोड के इस टुकड़े में डाल:गैर स्वैच्छिक संदर्भ स्विच: मैं उन्हें कैसे रोक सकता हूं?
for (unsigned int i = 0; i<10000; i++) {
for (unsigned int j = 0; j<10000; j++) {
std::ifstream &a = s->fhandle->open("test");
char temp[30];
a.getline(temp, 30);
s->fhandle->close("test");
}
}
जब मैं आवेदन भाग गया मैं यह देखने के लिए कि क्या स्मृति बढ़ती है, cateded/proc // स्थिति। ,
Name: origin-test
State: R (running)
Tgid: 7267
Pid: 7267
PPid: 6619
TracerPid: 0
Uid: 1000 1000 1000 1000
Gid: 1000 1000 1000 1000
FDSize: 256
Groups: 4 20 24 46 110 111 119 122 1000
VmPeak: 183848 kB
VmSize: 118308 kB
VmLck: 0 kB
VmHWM: 5116 kB
VmRSS: 5116 kB
VmData: 9560 kB
VmStk: 136 kB
VmExe: 28 kB
VmLib: 11496 kB
VmPTE: 240 kB
VmSwap: 0 kB
Threads: 2
SigQ: 0/16382
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: 0000000000002004
SigCgt: 00000001800044c2
CapInh: 0000000000000000
CapPrm: 0000000000000000
CapEff: 0000000000000000
CapBnd: ffffffffffffffff
Cpus_allowed: 3f
Cpus_allowed_list: 0-5
Mems_allowed: 00000000,00000001
Mems_allowed_list: 0
voluntary_ctxt_switches: 120
nonvoluntary_ctxt_switches: 26475
मूल्यों में से कोई भी पिछले एक को छोड़कर बदल दिया तो यह अर्थ है कि वहाँ कोई मेमोरी लीक कर रहे हैं: उत्पादन क्रम के बारे में 2 मिनट के बाद निम्नलिखित है?
लेकिन क्या अधिक महत्वपूर्ण है और मैं क्या जानना चाहता हूं, अगर यह बुरा है कि अंतिम मूल्य तेजी से बढ़ रहा है (लगभग 2 मिनट में लगभग 26475 स्विच!)।
मैं कुछ अन्य अनुप्रयोगों को देखा तुलना करने के लिए कितना गैर volunary स्विच वे हैं:
- फ़ायरफ़ॉक्स: लगभग 200
- Gdm: 2
- Netbeans: 19
फिर मैंने गुमराह किया और कुछ सामान पाया लेकिन यह समझने के लिए मेरे लिए तकनीकी है। मुझे इससे क्या मिला है यह तब होता है जब एप्लिकेशन प्रोसेसर या कुछ स्विच करता है? (मेरे पास एक एमडी 6-कोर प्रोसेसर बीटीडब्ल्यू है)।
मैं अपने आवेदन को ऐसा करने से कैसे रोक सकता हूं और एप्लिकेशन चलाने पर यह कितनी दूर हो सकती है?
अग्रिम धन्यवाद, रॉबिन।
चूंकि आप शायद लिनक्स पर हैं, इसलिए संभव स्मृति रिसाव खोजने में आपकी सहायता के लिए वालग्रिंड का उपयोग क्यों न करें? – Palmik
मुझे समझ में नहीं आता कि आपको लगता है कि कोड आपको स्मृति रिसाव की जांच करने में मदद करेगा। – Ferruccio
खैर, मुझे लगता है कि यह उन इनपुट फ़ाइल स्ट्रीम को आवंटित/नष्ट करने वाले कोड में स्मृति रिसाव खोजने में उसकी मदद कर सकता है। –