Android缓存后台进程不断增加

时间:2015-03-22 11:21:59

标签: java android caching memory-management memory-leaks

在我的名为“PriceDekho”的android应用程序中,缓存后台进程占用了太多空间。 首先,当我启动应用程序时,应用程序需要大约30MB(我认为它可以)但问题是当我浏览应用程序页面时,这个大小不断增加到200 MB。此应用程序“缓存后台进程”也随移动RAM大小而变化。如果移动RAM大小为2GB,则此应用程序“缓存后台进程”大小将达到500到700 MB。

我的应用程序只有5到6个屏幕。我只需要稳定缓存的背景大小。

如何清除应用程序缓存大小?请帮忙。

enter image description here

enter image description here

2 个答案:

答案 0 :(得分:7)

听起来你有垃圾收集器无法删除的内存泄漏。例如,如果您需要从非上下文类中引用ValueError: shapes (3,1) and (3,3) not aligned: 1 (dim 1) != 3 (dim 0),那么它从未在那里释放。大多数情况下,Android Studio会指出这些内容,但您可以尝试使用LeakCanary并搜索它们。

添加依赖项

Context

并在dependencies { debugCompile 'com.squareup.leakcanary:leakcanary-android:1.5.1' } 课程中使用它。如果您还没有,请创建一个。

Application

答案 1 :(得分:1)

缓存后台进程肯定会随RAM大小而变化,因为如果有更多可用内存,系统将允许缓存更多数据。

但是,应用程序在内存使用方面的增加模式可能是由于内存泄漏或在后台创建了大量对象。垃圾收集器不是全天候的朋友,可能会因程序错误而忽略内存泄漏。

由于没有发布用于审核的代码,因此需要提出一些微不足道的问题:

  • 使用位图进行了大量的图像处理吗?如果是,这些位图是否被回收?
  • 您的应用程序是否明智地使用上下文,即避免使用应用程序上下文,除非需要?
  • 是否注册了侦听器?

    如上所述,LeakCanary在这种情况下肯定会非常有用,肯定比Android Monitor更有用。