आप इसे खोजने के लिए जावा वाद्ययंत्र को देखना चाहते हैं। Here इसका एक उदाहरण है।
आपके मामले में, जैसा कि मेरा मानना है कि आप अपने आवेदन के साथ वस्तुओं का आकार ढूंढना चाहते हैं, तो आप इंस्ट्रूमेंटेशन ऑब्जेक्ट को वैश्विक रूप से उपलब्ध कराएंगे (static
) ताकि आप इसे अपने एप्लिकेशन से एक्सेस कर सकें।
कोड लिंक से कॉपी किया गया:
public class MyAgent {
private static volatile Instrumentation globalInstr;
public static void premain(String args, Instrumentation inst) {
globalInstr = inst;
}
public static long getObjectSize(Object obj) {
if (globalInstr == null)
throw new IllegalStateException("Agent not initted");
return globalInstr.getObjectSize(obj);
}
}
हालांकि, मेरा मानना है कि आप केवल वस्तुओं (नहीं आदिम प्रकार, यह भी आप आप के रूप में उन्हें पता लगाने के लिए की आवश्यकता नहीं है के आकार को खोजने के लिए सक्षम हो जाएगा पहले से ही उन्हें पता है :-))
ध्यान दें कि getObjectSize() विधि वस्तु में पारित द्वारा संदर्भित अन्य वस्तुओं के प्रयुक्त स्मृति शामिल नहीं है। उदाहरण के लिए, यदि वस्तु एक ओब के लिए एक संदर्भ है जेक्ट बी, फिर ऑब्जेक्ट ए की रिपोर्ट की गई मेमोरी उपयोग में ऑब्जेक्ट बी (आमतौर पर 4 बाइट्स) के संदर्भ के लिए केवल बाइट्स शामिल होंगे, वास्तविक वस्तु नहीं।
एक वस्तु की स्मृति उपयोग (यानी जो "subobjects" या वस्तुओं "मुख्य" वस्तु से जाना जाता भी शामिल है) का एक "गहरी" गिनती प्राप्त करने के लिए है, तो आप Classmexer एजेंट बीटा डाउनलोड के लिए उपलब्ध का उपयोग कर सकते this साइट से।
वे प्रति मशीन में भिन्न नहीं होते हैं लेकिन जावा में कोई आकार का ऑपरेटर नहीं है यदि आप – Cratylus