我很难找到可能的内存泄漏.
我有一个Activity在后台做了一些繁重的工作.
我有一个Activity在后台做了一些繁重的工作.
执行某些任务后,该应用程序会消耗太多内存.它似乎没有得到适当的清理.
这是处于默认状态的Activity:
如果我运行Activity正在执行的任务,则会分配越来越多的内存.
起初我以为这必须是内存问题,因为GC无法正常释放内存.据我所知,如果没有对象的参考,GC可以释放内存.那是对的吗?
现在是困扰我的部分:
如果我从Android Studio运行GC,则会正确清理内存并且我的活动永远不会关闭.我需要在分配大量内存时使用Android Studio GC.
这是我的意思:
一般来说,问题是:
为什么Android Studio GC可以正确清理内存,为什么它不能与自动android GC一起正常工作?
我知道这是一个相当普遍的问题.我只是想知道,如果有不同类型的垃圾收集或类似的东西.
同时调用System.gc();没有正确清理内存.
附加信息:
Moto G第二代
Android 5.0.2.
解决方法@H_301_41@
由于几个原因,可能会发生内存泄漏.一个常见原因是位图无法正确回收.内存泄漏的其他种子是将上下文保留在对象中.例如,您启动异步任务并传递上下文,因为稍后您需要它.当异步任务正在运行时,它会保留对上下文的引用,因此整个活动都在内存中.这也是非常频繁的匿名和内部类,它们引用了通常是片段或活动的父类.
我建议你使用库泄漏金丝雀来发现内存泄漏,并使用Android工具跟踪分配,以便准确发现内存泄漏发生的位置.
我建议你使用库泄漏金丝雀来发现内存泄漏,并使用Android工具跟踪分配,以便准确发现内存泄漏发生的位置.