许多GC,Android监视器锯齿状=内存泄漏?

3

这是我的内存监视器:进入图像描述

我怀疑我的项目存在内存问题。但我决定在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 Monitor中,内存分析器: enter image description here 这是一个全新由Android Studio生成的项目,我自己没有添加任何代码。我正在运行一个虚拟设备(Android模拟器)4.0.3 x86,与我的Nexus 5或Genymotion相同。
这正常吗?
编辑
感谢Jiang YD和weston的答案,我更深入地研究了内存堆问题: enter image description here 所以所有的分配主要来自dumpGfxInfo()。 有了这些信息,我能够在StackOverFlow上找到类似的帖子:Android:恒定的内存消耗/dumpGfxInfo(),它似乎是Android Studio的一个问题,可以在此处找到记录:https://code.google.com/p/android/issues/detail?id=182869 编辑2
现在在Android Studio 1.4 beta中已经修复了。

1
似乎只有调试器线程监视起作用了,因为它是一个空白活动。所以分配可能是由调试器进行的。您能够检查一下堆中的内容吗? - Jiang YD
谢谢,你的提示帮了我大忙!我编辑了我的原始贴文(这是与Android Studio中的错误相关的:https://code.google.com/p/android/issues/detail?id=182869) - stankocken
是的,这是一个调试器的问题 :) - Jiang YD
已经修复了!进入1.4测试版。 - stankocken
1个回答

1
首先,只有当消耗的内存随时间增加时才会出现内存泄漏。这些图表并没有展示出这种情况。
其次,我认为内存锯齿状图案必须是正常的。您的第一个图表有更大的峰值和谷值,因此它指向了项目中额外的分配,但对于实际跟踪分配和垃圾回收问题并不是那么有帮助。
更好的选择是在Android设备监视器中使用分配跟踪器:

Allocation Tracker

点击开始跟踪,然后获取分配情况。您将看到该期间分配的内容。点击每个条目可查看分配的调用堆栈。

您可以使用此功能查看空项目的情况,也可以查看自己的情况。


谢谢,你的提示帮了我很多!我编辑了我的原始帖子(它与Android Studio中的一个错误有关:https://code.google.com/p/android/issues/detail?id=182869) - stankocken

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接