gpt4 book ai didi

android - 堆分析工具报告的位图潜在内存泄漏,但没有应用程序使用的位图

转载 作者:行者123 更新时间:2023-11-30 02:04:40 28 4
gpt4 key购买 nike

我的应用程序运行良好(即没有崩溃)。在测试期间,我一直在调查内存使用情况。我使用 Android Studio (AI-141.2006197) DDMS 输出 Dump HPROF 文件,然后在 Eclipse Memory Analyzer 中打开它。这个工具描述了一个泄漏嫌疑人:

One instance of "android.graphics.Bitmap" loaded by "<system class loader>" occupies 
2,536,984 (40.81%) bytes. The memory is accumulated in one instance of "byte[]"
loaded by "<system class loader>".

Keywords
byte[]
android.graphics.Bitmap

来自 dominator_tree 的更多信息:

path2gc

在过去的一天里,我将我的应用程序的打开 Activity 和 fragment 剥离到最基本的部分,删除了所有打开和对位图的引用,删除了菜单、服务等所有内容。剩下的就是一个包含 1 个 fragment 的 Activity 。该 fragment 有一个 ListView,每个列表项都有一个简单的 TextView。不使用位图。如果需要,我可以在以后对此问题的编辑中显示代码。

我正在手机和平​​板电脑上测试这个精简版应用程序。我安装应用程序,启动它,看到第一个 fragment 显示的列表,然后退出。通过 DDMS,我引发了一次 GC,然后执行堆转储并在 Eclipse 内存分析器中检查它。对于手机和平板电脑,我都看到了“潜在的”内存泄漏。

我的测试手机使用 cynogenmod ROM,有一个性能设置选项“允许清除 Assets ”(参见 http://pocketnow.com/2012/12/10/5-nexus-4-speed-tips#toc-5)。当我启用此功能时,我潜在的内存泄漏就会消失。这让我觉得我的应用程序毕竟没有问题,但它的某些系统行为我不明白。

一些问题:

  1. 这可能是我的应用程序内存泄漏吗?
  2. 如果我的测试应用程序没有使用位图或可绘制对象,为什么要为位图分配内存?我可以检查什么?
  3. 关于解释 Eclipse 内存分析器报告的哪些潜在内存泄漏可以忽略,您有什么智慧的话吗?

提前致谢。我来自嵌入式实时 C 背景,所以当我看到内存泄漏时会非常紧张!

最佳答案

这个位图是系统相关的,不是应用程序中的内存泄漏。我通过帖子得出这个结论Android EdgeEffect appears to allocate a 1 meg bitmapStrange Bitmap using 1 Mb of Heap .

对于阅读本文的任何人,我想提请您注意另一篇非常有用的文章,该文章向我展示了如何查看 Eclipse Memory Analyzer 工具指向的位图。这确实有助于调试。参见 MAT (Eclipse Memory Analyzer) - how to view bitmaps from memory dump

关于android - 堆分析工具报告的位图潜在内存泄漏,但没有应用程序使用的位图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30881864/

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