gpt4 book ai didi

android - 与 Bitmap 不同,byte[] 是否会被垃圾收集?或者是一样的?

转载 作者:行者123 更新时间:2023-11-30 04:22:51 25 4
gpt4 key购买 nike

我在我的 Android 应用程序中遇到了一堆古怪的(而且很难找到)内存泄漏。我没有任何静态位图(所有关于泄漏 Bitamp 的教程都告诉你不要这样做)。但是,我确实有一个位图,我存储在我的应用程序类中,我的一系列 Activity 正在使用它。当最后一个 Activity 退出时,我正在调用 recycle(),但我想知道将数据存储为 byte[] 并创建是否更安全在每个使用它的 Activity 中从本地取出一个 Bitamp,然后在完成后立即释放它。我对 byte[] 感到好奇的是,VM 的垃圾收集时间比 Bitmap 更容易(它似乎完全不擅长)。

非常感谢所有帮助。

最佳答案

Bitmap 改变到 byte[]不会解决问题,这是由维护对 Bitmap 的引用引起的目的。而不是调用 recycle() ,您应该将引用设置为 null当最后一个 Activity 退出时。这将完成调用 recycle() 的所有操作dos plus 允许 GC 收集 Bitmap对象本身。 (GC在回收时不区分Bitmapbyte[],未引用对象就是未引用对象...)

唯一建议(如果 Bitmap 确实是内存泄漏的来源)是使用 WeakReference<Bitmap> 在您的应用程序类中而不是硬引用。那么每个 Activity 都可以get()实际Bitmap (如果它仍然存在)。那么你不必将它设置为 null ; GC 将自动收集 Bitmap当没有硬引用时,留下一个空的弱引用。

关于android - 与 Bitmap 不同,byte[] 是否会被垃圾收集?或者是一样的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9010314/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com