2009-12-01 15 views
6

मान लीजिए कि मेरे पास जावा क्लास है जिसमें 100 के लायक विधि कोड है जिसमें कोई चर नहीं है, लेकिन केवल 20 बाइट गुण हैं।विधि गहन जावा ऑब्जेक्ट की मेमोरी पदचिह्न क्या है?

मैं इस कक्षा से 1000 वस्तुओं को तुरंत चालू करता हूं।

क्या मैंने 100,000 मेमोरी का उपभोग किया है? या केवल 100 के + (20bytes * 1000)? या कुछ और पूरी तरह से?

+1

आप इसे चला सकते हैं, और यदि आप लिनक्स पर हैं तो टास्क मैनेजर/या शीर्ष जांचें .... – Dani

उत्तर

10

कक्षा लोड करने के लिए स्मृति पदचिह्न लगभग कोड आकार के अनुरूप होगा, लेकिन कक्षा के प्रत्येक उदाहरण के लिए कोड डुप्लिकेट नहीं किया जाएगा। एक उदाहरण के लिए केवल उदाहरण की विशेषता के रूप में अधिक स्मृति की आवश्यकता होगी + ऑब्जेक्ट इंस्टेंस को प्रबंधित करने के लिए कुछ ओवरहेड।

0

आप वस्तुओं के केवल 'चर' भाग को तुरंत चालू कर देंगे, इसलिए केवल गुण (और मुझे लगता है कि यहां कुछ और बाइट ओवरहेड हैं)। आपका बाद का अनुमान सही है।

2

यहाँ जावा में वस्तुओं की स्मृति के उपयोग का निर्धारण करने के लिए एक सामान्य गाइड है: http://www.javamex.com/tutorials/memory/object_memory_usage.shtml

मुझे लगता है कि स्मृति के उपयोग विधि परिभाषाओं से किए गए एक निश्चित राशि हो जाएगा, (संभवतः permgen अंतरिक्ष में डाल दिया जब वर्ग है लोड की गई) उदाहरणों की संख्या के आनुपातिक के बजाय।

0

jvisualvm (जेडीके में) के साथ संलग्न करने का प्रयास करें और हमें बताएं कि आप क्या देखते हैं।

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