2011-01-06 23 views
17

क्या यह पता लगाने का कोई तरीका है कि वीएम में मेरा जावा थ्रेड कितना मेमोरी ले रहा है?मेरे जावा धागे कितनी मेमोरी लेते हैं?

उदाहरण के लिए, स्टैक ट्रेस डंप या कुछ अन्य माध्यमों का उपयोग करना।

धन्यवाद

+0

आपको [VisualVM] (https://visualvm.dev.java.net/) टूल आज़माएं। –

+7

सूर्य सुनना चाहिए - प्रति-थ्रेड मेमोरी उपयोग प्राप्त करने के लिए आप प्लेटफार्म-विशिष्ट 'थ्रेडएमएक्सबीन' पर नए इंटरफेस का उपयोग कर सकते हैं: http://download.oracle.com/javase/6/docs/jre/api/management/ एक्सटेंशन/कॉम/सूरज/प्रबंधन/थ्रेडएमएक्सबीन.html # getThreadAllocatedBytes% 28long% 29 – BeeOnRope

+0

@BeeOnRope यह शानदार जवाब है! आपको इसे एक उत्तर के रूप में पोस्ट करना चाहिए और मैं इसे वोट दूंगा। –

उत्तर

22

जावा धागे साझा स्मृति के रूप में ढेर का उपयोग करते हैं। व्यक्तिगत धागे का ढेर होता है (जिसका आकार आप -Xss कमांड लाइन विकल्प के माध्यम से सेट कर सकते हैं, डिफ़ॉल्ट 512 केबी है), लेकिन अन्य सभी मेमोरी (ढेर) विशिष्ट धागे से संबंधित नहीं है, और यह पूछना कि इसमें से कितना विशिष्ट थ्रेड उपयोग करता है बस समझ में नहीं आता है।

+0

लेकिन मेरे सिस्टम में, मेरे पास सभी धागे समान काम कर रहे हैं। तो बस एक अनुमानित तस्वीर प्राप्त करने के लिए, मैं ढेर के आकार को प्राप्त करने और धागे की संख्या से विभाजित करने के बारे में सोच रहा हूं ताकि प्रत्येक धागे का अनुमानित आकार प्राप्त हो सके .. क्या यह किराया धारणा होगी? –

+0

@ विकस: यह अभी भी समझ में नहीं आता है। * * के लिए उस नंबर * का उपयोग करना चाहते हैं? –

+0

मुझे कुछ बाहरी कारकों के आधार पर धागे की संख्या को गतिशील रूप से बढ़ाने या घटाने के लिए एक प्रणाली बनाना है। मैं अपने दो विकल्पों का विश्लेषण करना चाहता था। 1. सिस्टम में हर समय बहुत से समय में धागे को शुरू करना और निकालना जारी रखें या 2. MAX की संख्या के साथ प्रारंभ करें और कम करने के लिए, मैं बस उन्हें थ्रेड.sleep में प्रतीक्षा करने के लिए कहता हूं। .. यह दूसरा दृष्टिकोण कार्यान्वयन बिंदु से अधिक सरल है, लेकिन यह विश्लेषण करना चाहता था कि सिस्टम में प्रतीक्षा थ्रेड कितना स्टैक स्पेस ले रहा है ताकि मैं स्मृति से बाहर की संभावनाओं को समाप्त कर सकूं। –

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