gpt4 book ai didi

android - Android ZXing 库是否存在内存泄漏?

转载 作者:太空宇宙 更新时间:2023-11-03 11:15:55 27 4
gpt4 key购买 nike

我使用 ZXing 库编写了一个 Android 应用程序,但出现了 java.lang.OutOfMemoryError

首先,我确定错误出在我这边,所以我根据 Patrick Dubroy Google I/O 2011: Memory management for Android Apps 使用了 Eclipse 内存分析器 (MAT)以及其他几个关于如何追踪内存泄漏的教程,例如 Android Memory Leaks OR Different Ways to Leak .

在 MAT 中,我发现随着时间的推移,数百个 com.google.zxing.common.BitMatrix 实例占用了我的大部分堆内存。

令人惊讶的是,我在原来的ZXing测试程序“CaptureActivity”中遇到了同样的问题!

经过一番调查后,我发现 DecodeHandler 类中的 Activity 引用可能会阻止垃圾收集器释放 BitMatrix。但我经验太少,无法验证这一点。此外,令我惊讶的是,我在原始 ZXing 库(2.1 版)中发现了这个问题。

任何人都可以重现这种现象或以前经历过这种现象吗?

最佳答案

我认为您走在正确的轨道上。您需要继续查看 MAT 堆配置文件以确定用户代码的哪一部分持有对 DecodeHandler 的引用并传递到 BitMatrix。尝试跟踪来自 BitMatric 的传入引用,计算支配树并检查泄漏嫌疑人。

尝试分析应用程序以查看代码的哪一部分负责 BitMatrix 分配,并尝试将其追溯到应用程序代码。

CaptureActivity的例子出现同样的问题,可能是库使用错误导致的,并不一定证明库有内存泄漏。例如,可以在示例保持不变的情况下更新库。

关于android - Android ZXing 库是否存在内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16930032/

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