【问题标题】:How to minimize GC_FOR_ALLOC occurrences?如何最小化 GC_FOR_ALLOC 的出现?
【发布时间】:2012-12-14 19:40:19
【问题描述】:

我的应用程序导致这些可怕的 GC_FOR_ALLOC 在特定位置(方法)多次发生:

12-29 22:20:30.229: D/dalvikvm(10592): GC_FOR_ALLOC freed 1105K, 14% free 10933K/12615K, paused 33ms, total 34ms
12-29 22:20:30.260: D/dalvikvm(10592): GC_FOR_ALLOC freed 337K, 13% free 11055K/12615K, paused 25ms, total 26ms
12-29 22:20:30.288: D/dalvikvm(10592): GC_FOR_ALLOC freed 278K, 14% free 10951K/12615K, paused 24ms, total 24ms
12-29 22:20:30.495: D/dalvikvm(10592): GC_CONCURRENT freed 633K, 11% free 11317K/12615K, paused 16ms+3ms, total 79ms
12-29 22:20:30.495: D/dalvikvm(10592): WAIT_FOR_CONCURRENT_GC blocked 16ms
12-29 22:20:30.499: D/dalvikvm(10592): WAIT_FOR_CONCURRENT_GC blocked 15ms

我很清楚我在内存管理方面做错了(是的,垃圾收集很棒,但仍然不能让我免于知道何时以及如何分配的责任)。

您能否推荐一种故障排除方法或技术,可以引导我找到有问题的代码行和可能的解决方案?

【问题讨论】:

  • 您可能想阅读 this blog post,作者是 Romain Guy(是的,那个每年在 I/O 上多次演讲的 Google 工程师)。
  • @Eric 这正是我需要的那种指针。谢谢! (顺便说一句,Romain Guy 是否与 Patrick 合作?)
  • 我不这么认为。 Patrick 是 Chrome 团队的成员,Romain 是 Android 团队的成员。Patrick 是如何参加 Android 演讲的?我不知道! :P

标签: java android memory-management garbage-collection dalvik


【解决方案1】:

Android DDMS 是 Eclipse 中 Android 开发工具的一部分,它有非常有用的工具,可用于分析和内存分配跟踪。

下面的截图突出显示了其中一些工具(都在 DDMS 下),一些工具需要通过单击左侧面板中的相应按钮(以红色突出显示)来激活,然后您可以在通过选择您要观看的标签(以蓝色突出显示)来显示右侧面板

堆和分配跟踪器在您的情况下将非常有用。

【讨论】:

  • 这很有帮助。谢谢!如果真正让我震惊的答案不会很快出现,将标记为已接受。
  • @srf 是时候兑现你的承诺了... ;)
  • @srf 现在是 2017 年。我认为没有比这个更令人震惊的答案了。
猜你喜欢
  • 1970-01-01
  • 2010-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多