java – Android Studio如何启动垃圾收集器以及它如何工作?

前端之家收集整理的这篇文章主要介绍了java – Android Studio如何启动垃圾收集器以及它如何工作?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我很难找到可能的内存泄漏.
我有一个Activity在后台做了一些繁重的工作.

执行某些任务后,该应用程序会消耗太多内存.它似乎没有得到适当的清理.

这是处于默认状态的Activity:

如果我运行Activity正在执行的任务,则会分配越来越多的内存.

一些工作后的活动:

起初我以为这必须是内存问题,因为GC无法正常释放内存.据我所知,如果没有对象的参考,GC可以释放内存.那是对的吗?

现在是困扰我的部分:

如果我从Android Studio运行GC,则会正确清理内存并且我的活动永远不会关闭.我需要在分配大量内存时使用Android Studio GC.

这是我的意思:

一般来说,问题是:

为什么Android Studio GC可以正确清理内存,为什么它不能与自动android GC一起正常工作?

我知道这是一个相当普遍的问题.我只是想知道,如果有不同类型的垃圾收集或类似的东西.

同时调用System.gc();没有正确清理内存.

附加信息:

Moto G第二代

Android 5.0.2.

解决方法

由于几个原因,可能会发生内存泄漏.一个常见原因是位图无法正确回收.内存泄漏的其他种子是将上下文保留在对象中.例如,您启动异步任务并传递上下文,因为稍后您需要它.当异步任务正在运行时,它会保留对上下文的引用,因此整个活动都在内存中.这也是非常频繁的匿名和内部类,它们引用了通常是片段或活动的父类.

我建议你使用库泄漏金丝雀来发现内存泄漏,并使用Android工具跟踪分配,以便准确发现内存泄漏发生的位置.

猜你在找的Android相关文章