【发布时间】:2013-12-11 11:29:06
【问题描述】:
我从 dalvikvm 获得了太多的 GC_FOR_ALLOC。 我从 REST 服务获取 XML:在一项活动中,我以编程方式(我)解析了大约 100 行,而在另一项活动中,我使用 SimpleXML 解析了大约 200 行。
在第一个中,我得到 50 GC_FOR_ALLOC。 在第二个我得到像300! (我什至不能全部发布,正文有 29579 个字符,只允许 30k)
我搜索过,几乎每个人都抱怨 gc_for_"M"alloc 而不是 gc_for_"A"lloc。
SimpleXML 的问题是因为创建了实例吗?
我将通过 dalvikvm 发布 logcat 转储,也许这些值有一些信息。
非常感谢您的帮助。
12-11 06:13:49.564: D/dalvikvm(6759): GC_FOR_ALLOC freed 362K, 13% free 4116K/4688K, paused 181ms, total 182ms
12-11 06:13:50.074: D/dalvikvm(6759): GC_FOR_ALLOC freed 303K, 13% free 4134K/4708K, paused 142ms, total 142ms
.... repeated many times .....
12-11 06:14:06.254: D/dalvikvm(6759): GC_FOR_ALLOC freed 73K, 13% free 4159K/4768K, paused 53ms, total 53ms
12-11 06:14:06.314: D/dalvikvm(6759): GC_FOR_ALLOC freed 103K, 13% free 4159K/4768K, paused 56ms, total 57ms
12-11 06:14:06.374: D/dalvikvm(6759): GC_FOR_ALLOC freed 29K, 12% free 4203K/4768K, paused 54ms, total 54ms
12-11 06:14:06.424: D/dalvikvm(6759): GC_FOR_ALLOC freed 73K, 13% fre
【问题讨论】:
-
没有你的代码很难调试你的代码。
-
例如,如果您使用 Google 地图,您会收到很多此类消息,而您却无能为力。我对消息使用过滤器(通过日志消息):^(?!.*(GC_)|(Cache)).*$
-
你是在循环内实例化一个对象吗?
-
在第一个 XML 中,是的,我在循环中实例化 Scanner,以便我可以逐行解析这些行,但这并不是最糟糕的“问题”。在第二个中,我使用 SimpleXML 框架“反序列化”,不知道代码,但我认为如果解析 XML,它必须创建一些实例。
-
我没有使用谷歌地图。我想知道是否有什么非常错误和明显的地方。
标签: android performance dalvik