मेरे पास जावा में एक bufferedImage है। मैं कैसे देख सकता हूं कि यह कितनी मेमोरी लेता है? अग्रिम धन्यवाद।जावा जावा में कितनी मेमोरी buffered छवि का उपयोग करें जांचें?
उत्तर
आप निर्धारित कर सकते हैं कि कितने बाइट्स छवि डेटा अकेले इस का उपयोग कर लेता है:
DataBuffer buff = image.getRaster().getDataBuffer();
int bytes = buff.getSize() * DataBuffer.getDataTypeSize(buff.getDataType())/8;
छवि को ही रंग मॉडल और अन्य बहीखाता जानकारी के लिए थोड़ा और अधिक स्थान लेता है, लेकिन बड़ी छवियों के लिए, bytes
प्रमुख कार्यकाल होगा।
+1 निश्चित रूप से एक स्मार्ट दृष्टिकोण है। BufferedImage में अतिरिक्त ओवरहेड तुलनात्मक रूप से छोटा है, खासकर जब अधिकांश छवियां आजकल अनुक्रमित रंग मॉडल का उपयोग नहीं करती हैं (जो कि छवि में डेटा का एकमात्र संभावित रूप से बड़ा हिस्सा है, दुर्लभ मामलों में 256k तक हो सकता है)। – mikera
आप अंत में 8 तक क्यों विभाजित करते हैं। क्या GetTataType() बिट्स में आकार वापस कर देता है? – klyngbaek
@thehanseatic - बिल्कुल। [डेटाबफर] के लिए दस्तावेज़ों से (http://docs.oracle.com/javase/6/docs/api/java/awt/image/DataBuffer.html): _ "डेटा प्रकार के आकार (बिट्स में) देता है , डेटाटाइप टैग दिया गया। "_ –
मुझे यकीन नहीं है कि बाइट्स की संख्या के लिए 100% सटीकता के साथ इसे समझने के लिए एक सीधा-आगे तरीका है, इसे स्वयं की गणना किए बिना (रंग मॉडल, छवि का आकार, और अन्य घटक)।
You can calculate the totalMemory() and freeMemory() आवंटन से पहले और बाद में ढेर पर, और इस तरह का अनुमान लगाएं। यदि अन्य वस्तुओं को आपके चेक के बीच आवंटित (या एकत्रित) किया जाता है, तो आपकी गणना सटीक नहीं होगी।
This discussion जेवीएम में प्राचीन प्रकारों के आकार के बारे में बात करता है (एक वस्तु कई आदिम वस्तुओं का संग्रह है), जिसका उपयोग आप इसे समझने के लिए कर सकते हैं।
This article जावा में स्मृति उपयोग का एक सिंहावलोकन दें।
मैं इसे स्वयं की गणना करने के लिए कैसे जाउंगा (रंग मॉडल और अन्य कारकों का मेम उपयोग?) धन्यवाद। – klyngbaek
मैं दस्तावेज पढ़ने के द्वारा, गणना करने के मैन्युअल तरीके का संदर्भ दे रहा था, यह पता लगाने के लिए कि प्राइमेटिव्स ने आखिरकार किसी दिए गए चित्र को बनाया है, और फिर केवल मान जोड़ना है। – jefflunt
Runtime#totalMemory
और Runtime#gc
का उपयोग करके आपको बहुत नज़दीक अनुमान प्राप्त करने में सक्षम होना चाहिए। उदाहरण:
Runtime.getRuntime().gc();Runtime.getRuntime().gc();Runtime.getRuntime().gc();
long totalUsed = Runtime.getRuntime().totalMemory();
BufferedImage image = ...
Runtime.getRuntime().gc();Runtime.getRuntime().gc();Runtime.getRuntime().gc();
totalUsed = Runtime.getRuntime().totalMemory() - total;
कॉलिंग gc
कई बार, संभावना है कि कचरा कलेक्टर वास्तव में चला जाएगा बढ़ जाती है के बाद से gc
सिर्फ एक सुझाव है। इस उदाहरण में gc
पर कॉल करना सुनिश्चित करता है कि एकत्रित नहीं होने वाली कोई भी वस्तु स्मृति उपयोग में जोड़ रही है।
- 1. मेरे जावा धागे कितनी मेमोरी लेते हैं?
- 2. हैशटेबल कितनी मेमोरी का उपयोग करता है?
- 3. जावा में मेमोरी उपयोग ढूँढना
- 4. जावा में जावा एसई एपीआई कितनी है?
- 5. जावा मेमोरी उपयोग की निगरानी कैसे करें?
- 6. जावा 6 अत्यधिक मेमोरी उपयोग
- 7. एक buffered चैनल का उपयोग कब करें?
- 8. जावा में buffered छवि n ग्राफिक्स 2 डी का आकार कैसे बदलें?
- 9. निर्धारित करें कि कक्षा कितनी मेमोरी का उपयोग करती है?
- 10. जावा में Serializable, क्लोनेबल और मेमोरी उपयोग
- 11. Enums कितनी मेमोरी लेते हैं?
- 12. जेपीआरओफ़ाइलर का उपयोग कर जावा में मेमोरी लीक कैसे खोजें?
- 13. जावा छवि का उपयोग कर टिफ संपीड़न
- 14. जावा जांचें कि क्या किसी छवि में पारदर्शिता
- 15. फसल और छवि अपलोड करें jQuery/जावा का उपयोग कर
- 16. जावा में थ्रेड या प्रक्रिया का मेमोरी उपयोग
- 17. जावा में पृष्ठभूमि छवि कैसे सेट करें?
- 18. का उपयोग कर जावा
- 19. जावा मेमोरी लीक
- 20. रेडहाट लिनक्स में जावा/टॉमकैट मेमोरी रिसाव?
- 21. जावा में HtmlUnit का उपयोग कैसे करें?
- 22. जावा में स्ट्रिंगबिल्डर का उपयोग कब करें
- 23. जावा में स्कैला स्थिरांक का उपयोग करें
- 24. जावा: मेमोरी कुशल ByteArrayOutputStream
- 25. जावा इन-मेमोरी संकलन
- 26. लिनक्स के तहत जावा से वर्चुअल मेमोरी उपयोग, बहुत मेमोरी
- 27. जावा - सॉकेट के साथ DataInputStream का उपयोग करके, buffered या नहीं?
- 28. छवि का आकार बदलें (जावा)
- 29. जावा मेमोरी प्रबंधन
- 30. जावा में प्रोग्रेस बार का उपयोग कैसे करें (नेटबीन्स जीयूआई)
जेडीके (जेआरई नहीं) के 'बिन' फ़ोल्डर में' JVisualVM' का उपयोग करें और अपनी जावा ऐप प्रक्रिया को संलग्न करें। इसका प्रोफाइलर अनुभाग ऐप में उपयोग की जाने वाली सभी कक्षाओं के स्मृति उपयोग को निकाल सकता है। –