2015-12-15 5 views
5

मैं एक बड़े बहु थ्रेडेड सर्वर के स्मृति उपयोग की जांच करने की कोशिश कर रहा हूं। Mallinfo() के अनुसार, मुझे arena=350M और fordblks=290M मिलता है, जो बताता है कि अधिकांश जगह वास्तव में malloc() के अंदर बर्बाद हो जाती है। malloc_info() फ़ंक्शन एक अच्छी XML डेटा संरचना प्रदान करता है जिसे स्वयं स्पष्टीकरण माना जाता है। फिर भी, क्या कोई मुझेजीएनयू malloc_info(): वास्तव में आवंटित स्मृति प्राप्त करें?

  • हैप 0 विशेष है? क्या वह मुख्य क्षेत्र है जिसमें अन्य सभी रहते हैं?
  • <size from=.../> आवंटित, मुक्त/उपलब्ध या दोनों हैं?
  • <system> तत्व क्या है? मेमोरी mmap()/sbrk() का उपयोग करके आवंटित?
  • <aspace> तत्व क्या है? उपलब्ध स्मृति?
  • <aspace type="mprotect" .../> के बारे में क्या?

बस एक शुरुआत के लिए, मैं कुल स्मृति आवेदन, अर्थात द्वारा आवंटित प्लॉट करने के लिए सक्षम होने के लिए करना चाहते हैं, सब कुछ आवंटित और अभी तक मुक्त नहीं, malloc() क्या सोचता है के अनुसार।

+1

स्रोत के माध्यम से जाकर, मुझे पता चला कि कोई भी स्वतंत्रता की मात्रा की गणना कर सकता है और अभी तक सभी 'आकार' और 'अनियंत्रित' तत्वों के सभी 'कुल' फ़ील्ड को संक्षेप में स्मृति (उपलब्ध) का उपयोग नहीं कर सकता है। वह मेरे दूसरे बिंदु का जवाब देता है। –

+1

अधिक स्रोत विश्लेषण: '' 'mallinfo()' arena' फ़ील्ड जैसा ही है। –

उत्तर

1

वर्चुअल मेमोरी उपयोग की एक बड़ी मात्रा आवश्यक रूप से एक समस्या नहीं है। विवाद संबंधी मुद्दों से बचने के लिए डिफ़ॉल्ट मॉलोक कार्यान्वयन प्रति थ्रेड भंडारण की बड़ी मात्रा आवंटित करेगा। यह विशेष रूप से 64-बिट कार्यान्वयन पर होता है जो आजकल काफी आम हैं। आपको तब तक चिंता नहीं करनी चाहिए जब तक आपको निवासी स्मृति के आकार में समस्याएं आती हैं या आपको पेजिंग समस्याएं मिलती हैं।

Kevin Grigorenko ब्लॉग पोस्ट जो WebSphere के संबंध में स्मृति के उपयोग से निपटने के एक नंबर लिखा है, लेकिन वे किसी भी बड़े मल्टी-थ्रेडेड प्रक्रिया के लिए लागू कर रहे हैं।

+1

धन्यवाद। मुझे http://files.cnblogs.com/files/hseagle/demo.pdf भी मिला, जो थोड़ा समझने में मदद करता है जीएनयू मॉलोक। –

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