如何分析Android上的堆转储?

问题描述:

我在logcat中收到了很多“dalvikvm:GC_CONCURRENT ...”消息,并且使用google搜索导致我下载Eclipse Memory Analyzer ...我已经想出了如何使用它,但是我没有知道如何理解它。我以前从来没有处理过内存泄漏问题,所以请耐心等待。如何分析Android上的堆转储?

“泄漏嫌疑人”包括由“system class loader”加载的“android.content.res.Resources”,“android.graphics.Bitmap”和“org.apache.harmony.xnet.provider.jsse.TrustManagerImpl” ”。我真的不知道这意味着什么或应该怎样帮助我;我甚至没有在我试图制作的应用中使用位图。

这应该如何帮助我?

的 “泄漏嫌疑人” 包括 “android.content.res.Resources”, “android.graphics.Bitmap” 和 “org.apache.harmony.xnet.provider.jsse.TrustManagerImpl” 加载的“系统类加载器“。

这些对于每个Android应用程序都是存在的,它们表示由Android基类分配的内存。

这应该如何帮助我?

您可以从您自己的类中找到对您自己对象的引用,然后追踪它们的根以找出将这些对象保存在内存中的内容。

您可能希望观看this presentation from Google I|O 2011,其中涵盖此过程。

+0

我明白了。不幸的是,这些是Eclipse Memory Analyzer通知我的唯一三个泄漏可疑事件。那么我应该不担心吗?我收到了很多GC_CONCURRENT消息。 – Kalina 2012-04-05 12:47:05

+1

@TheBeatlemaniac:垃圾收集是完全正常的。 MAT可以帮助你找到不被垃圾收集的东西。如果您遇到与垃圾回收过多相关的特定性能问题,您需要跟踪您的分配情况 - 请参阅http://developer.android.com/guide/developing/debugging/ddms.html#alloc – CommonsWare 2012-04-05 12:49:12

+0

是的,它运行得令人难以置信慢,我得到了GC_CONCURRENT东西的文本墙:( – Kalina 2012-04-05 18:02:57