LogCat垃圾邮件GC_FOR_MALLOC但只使用了50%的内存

时间:2012-11-11 20:20:53

标签: java android garbage-collection logcat dalvik

对于我写的一个简单的应用程序,logcat会发送大量GC_FOR_MALLOC这样的消息:

D/dalvikvm(10236): GC_FOR_MALLOC freed 224K, 51% free 3290K/6599K, external 0K/0K, paused 21ms
D/dalvikvm(10236): GC_FOR_MALLOC freed 290K, 50% free 3323K/6599K, external 0K/0K, paused 33ms
D/dalvikvm(10236): GC_FOR_MALLOC freed 229K, 50% free 3325K/6599K, external 0K/0K, paused 24ms

该应用程序并不多,只使用Apache HttpClient 4.X通过https加载两个HTML文档。我已经定义了android:largeHeap="true",但它没有帮助。

从我读过的消息中我有50%的内存空闲,但无论如何都要强制GC运行。你知道为什么会这样,以及如何解决这个问题?感谢。

1 个答案:

答案 0 :(得分:2)

您的代码可能有问题。我将给出一个通用答案,因为没有提供代码。

如果您有500条消息通知每个消息中释放了大约250K,则表示您的代码已分配/释放了总共125MB。

对于一般的html页面,这不应该发生,通常不需要这么多的内存。

您需要确定应用程序重复创建/发布的对象,并尝试重用它们而不是创建新对象。

在Eclipse中,您可以使用DDMS标签。选择您的流程,转到Allocation Tracker并按Start Tracking,以获取正在分配的对象。

问候。