मेरे ऐप में गंभीर मेमोरी समस्याओं को ट्रैक करने की प्रक्रिया में, मैंने अपने ऐप से कई ढेर डंप देखा, और अधिकांश समय मेरे पास एक बड़ा बिटमैप है जो मैं नहीं करता के बारे में पता नहीं हैवास्तव में एक एंड्रॉइड हीप डंप से लिया गया बिटमैप कैसे देखें
इसमें 9.4 एमबी, या 9,830,400 बाइट्स, या वास्तव में 1280x1920 छवि 4 बाइट प्रति पिक्सेल पर लेती है।
मैंने एक्लिप्स मैट में चेक किया है, यह वास्तव में एक बाइट [9830400] है, जिसमें एक आने वाला संदर्भ है जो android.graphics.Bitmap
है।
मैं इसे एक फ़ाइल में डंप करना चाहता हूं और इसे देखने का प्रयास करना चाहता हूं। मैं समझ नहीं पा रहा हूं कि यह कहां से आ रहा है। मेरे सभी drawables में मेरी सबसे बड़ी छवि 640x960 पीएनजी है, जो 3 एमबी से कम लेता है।
मैंने ग्रहण को "फ़ाइल में प्रतिलिपि बनाने" के लिए उपयोग करने का प्रयास किया, लेकिन मुझे लगता है कि यह बस फ़ाइल में बफर प्रिंट करता है, और मुझे कोई छवि सॉफ़्टवेयर नहीं पता है जो बाइट्स की धारा पढ़ सकता है और इसे एक के रूप में प्रदर्शित कर सकता है 4 बाइट प्रति पिक्सेल छवि।
कोई विचार? किसी फ़ाइल के लिए बाइट सरणी डंप,/sdcard/img को धक्का, और इस तरह एक गतिविधि लोड:
@Override
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
try {
final File inputFile = new File("/sdcard/img");
final FileInputStream isr = new FileInputStream(inputFile);
final Bitmap bmp = BitmapFactory.decodeStream(isr);
ImageView iv = new ImageView(this);
iv.setImageBitmap(bmp);
setContentView(iv);
Log.d("ImageTest", "Image was inflated");
} catch (final FileNotFoundException e) {
Log.d("ImageTest", "Image was not inflated");
}
}
मैं कुछ भी नहीं देखा था
यहाँ मैं क्या करने की कोशिश की है।
क्या आप जानते हैं कि छवि को एन्कोड किया गया है? मान लें कि इसे byte[] buffer
में संग्रहीत किया गया है। buffer[0]
लाल है, buffer[1]
हरा, आदि है?
कि सिर्फ देशी प्रतिपादन कैश नहीं है? क्या आप हार्डवेयर त्वरण सक्षम के साथ चलाते हैं? – Peterdk
हाँ मेरे पास एचडब्ल्यू त्वरण है। लेकिन यह स्पष्ट नहीं करता है कि मेरा बिटमैप 200% क्यों बढ़ाया गया था और यह विशाल बिटमैप ढेर में क्यों आवंटित किया गया है, आईएमएचओ। –
क्या आपके पास कोई भाग्य है कि यह पता लगाने के लिए कि यह छवि क्या थी? मेरे पास भी ऐसी नकली छवि है जो 1.1 एमबी लेती है और एंड्रॉइड प्रीलोडेड संसाधनों से आ रही है। जब मैं जीआईएमपी का उपयोग करके बाइट बफर के पूर्वावलोकन को देखता हूं, तो मुझे आकार 1044x270 की नीली रेडियल ढाल छवि दिखाई देती है। – c05mic