我的一个应用程序遇到内存泄漏问题,几个小时后,我决定创建一个新项目作为该应用程序的简化版本:
- 该应用包含 2 个 Activity
- 第一页xml有3个
ImageView
带有 src 和格式。该代码会监听对其中一个的点击并打开一个新 Activity (第二个 Activity )。 - 第二个只有 2
ImageView
s 和 2EditText
秒。.java
什么都不做 - 我在
drawable
中只有 4 张图片 - 这是一个新项目,仅添加了这两个 Activity 和一种新样式(只是全屏显示)
问题:
- 点击收听
ImageView
给出 OOM 异常。 - 堆大小约为 45 MB,已满 91%
更多详情:
- 我试过内存分析器。我的类(class)只有 1 个实例。疑似问题(1 & 2 which account > 75%)是
byte[]
由<system class loader>
加载 - 我还在我的日志中发现错误“资源已在附加堆栈跟踪中获取但从未释放”,根据上述内容,这是没有意义的。
我为此花了一整天,并创建了无数新项目来测试它,但我仍然迷路了。我知道大多数人无法根据给定的信息提供答案,但是如果您能告诉我接下来的步骤,或者一些尝试找出问题的方法,那也算作答案 .
最佳答案
在您的应用程序标签中添加您的 AppManifest.xml 代码:
android:largeHeap="true"
这将尝试防止您的应用导致 OutOfMemoryError。
文档: http://developer.android.com/guide/topics/manifest/application-element.html#largeHeap
虽然这不是一个非常推荐的解决方案,但它应该仍然有效......
如果图片太大,您也可以尝试降低图片的分辨率。
如果问题仍然存在,我强烈建议检查此链接:http://developer.android.com/training/displaying-bitmaps/load-bitmap.html#load-bitmap
关于java - Android 内存泄漏问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32160330/