【问题标题】:Lot of GC, Android monitor sawtooth = Memory leak?大量 GC,Android 监视器锯齿 = 内存泄漏?
【发布时间】:2015-11-21 11:48:12
【问题描述】:

这是我的内存监视器:

我怀疑我自己的项目存在内存问题。但我决定在 Android Studio 中测试一个新的空白项目并启动它,然后什么都不碰。也是同样的问题。

我的日志猫:

08-27 09:25:36.909    1276-1288/**** D/dalvikvm﹕ GC_FOR_ALLOC freed 385K, 15% free 3118K/3664K, paused 1ms, total 1ms
08-27 09:25:37.773    1276-1288/**** D/dalvikvm﹕ GC_FOR_ALLOC freed 407K, 16% free 3102K/3676K, paused 2ms, total 2ms
08-27 09:25:38.561    1276-1288/**** D/dalvikvm﹕ GC_FOR_ALLOC freed 4    08K, 16% free 3102K/3676K, paused 3ms, total 3ms
08-27 09:25:39.317    1276-1288/**** D/dalvikvm﹕ GC_FOR_ALLOC freed 4    08K, 16% free 3102K/3676K, paused 2ms, total 2ms
08-27 09:25:40.101    1276-1288/**** D/dalvikvm﹕ GC_FOR_ALLOC freed 4    08K, 16% free 3102K/3676K, paused 2ms, total 2ms
08-27 09:25:40.909    1276-1288/**** D/dalvikvm﹕ GC_FOR_ALLOC freed 4    08K, 16% free 3102K/3676K, paused 1ms, total 1ms
08-27 09:25:41.685    1276-1288/**** D/dalvikvm﹕ GC_FOR_ALLOC freed 4    08K, 16% free 3102K/3676K, paused 2ms, total 2ms
08-27 09:25:42.365    1276-1288/**** D/dalvikvm﹕ GC_FOR_ALLOC freed 4    08K, 16% free 3102K/3676K, paused 2ms, total 2ms
08-27 09:25:43.141    1276-1288/**** D/dalvikvm﹕ GC_FOR_ALLOC freed 4    08K, 16% free 3102K/3676K, paused 1ms, total 1ms
08-27 09:25:43.973    1276-1288/**** D/dalvikvm﹕ GC_FOR_ALLOC freed 4    08K, 16% free 3102K/3676K, paused 2ms, total 2ms
08-27 09:25:44.629    1276-1288/**** D/dalvikvm﹕ GC_FOR_ALLOC freed 4    08K, 16% free 3102K/3676K, paused 2ms, total 2ms

进入我的 Android 监视器,内存分析器:

我在这个新项目中有 0 行自己的代码,它是由 Android Studio 生成的全新代码。我正在运行一个虚拟设备(Android 模拟器)4.0.3 x86。我的 Nexus 5 或 Genymotion 也是如此。

这正常吗?

编辑

感谢Jiang YD和weston的回答,我更深入地调查了内存堆的问题:

所以所有的分配主要来自dumpGfxInfo()。 多亏了这些信息,我才能在 StackOverFlow 上找到类似的帖子:Android: Constant memory consumption / dumpGfxInfo(),这似乎是 Android Studio 的问题,在此处登录:https://code.google.com/p/android/issues/detail?id=182869

编辑 2

它现在已修复到 Android Studio 1.4 测试版中

【问题讨论】:

  • 似乎只有调试器线程监视在工作,因为它是一个空白活动。因此分配可能由调试器进行。你能检查一下堆里有什么吗?
  • 谢谢,您帮助了您的提示!我编辑了我的原始帖子(它与 Android Studio 中的一个错误有关:code.google.com/p/android/issues/detail?id=182869
  • 是的,所以它是一个调试器的东西 :)
  • 现在已经修复了!进入 1.4 测试版

标签: android memory-leaks garbage-collection


【解决方案1】:

首先,如果消耗的内存随着时间的推移而增加,这只是内存泄漏。这些图表没有表现出这一点。

其次,我认为记忆锯齿纹一定是正常的。您的第一个图表有较大的波峰和波谷,因此它指向您的项目在空项目上完成的额外分配,但它对于实际跟踪分配和垃圾收集问题并没有多大帮助。

更好的选择是在 android 设备监视器中,分配跟踪器:

单击开始跟踪,然后获取分配。您将看到在该期间分配了什么。单击每个条目会给出分配的调用堆栈。

您可以使用它来查看空项目的情况,也可以查看您的项目的情况。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2013-03-01
  • 1970-01-01
  • 2013-04-09
  • 2013-09-02
  • 2015-03-07
  • 2013-03-11
  • 2018-05-03
  • 2011-12-13
相关资源
最近更新 更多