gpt4 book ai didi

java - Android dalvikvm-heap : Clamp target GC heap

转载 作者:IT老高 更新时间:2023-10-28 20:42:08 26 4
gpt4 key购买 nike

我正在编写一个将大量联系人与 Android 联系人数据库同步的程序。对于大约 700 个联系人,下载工作正常,之后我不断收到内存堆错误,该错误调用无限数量的 GC 语句并最终重新启动手机。我正面临 HTC 渴望的问题。

我使用 DDMS 的堆分配工具检查了应用程序的堆大小,并使用 Debug.dumpHprofData 提取了 hprof 文件。两个日志都表明堆大小约为 2.4MB。

但是我得到以下日志,表明堆大小超过 32.MB

dalvikvm-heap(92): Clamp target GC heap from 33.999MB to 32.000MB
dalvikvm(92): GC_FOR_MALLOC freed 2 objects / 48 bytes in 313ms

我在循环中插入了以下日志语句,其中写入了我的联系人下载逻辑。

Log.e("Memory", "free mem =" +runtime.freeMemory());
Log.e("Memory", "total memory =" +runtime.totalMemory());

这些是打印语句的初始值和最终值

---------------------------------------------------------------
11-11 12:56:04.168: ERROR/Memory(25132): free mem =871248
11-11 12:56:04.168: ERROR/Memory(25132): total memory =4202464

---------------------------------------------------------------

11-11 13:01:55.408: ERROR/Memory(25132): free mem =891640
11-11 13:01:55.408: ERROR/Memory(25132): total memory =4726752

---------------------------------------------------------------

这表明在同步联系人逻辑中显然不存在内存泄漏。

有人可以告诉我为什么堆大小增加(高达 32.00Mb)到设备重新启动的程度吗?我是 Android 和 Java 新手,所以请放轻松:).....

最佳答案

虽然这不是最佳答案,但我强烈建议您观看 Memory management for Android Apps 的视频在 Google IO 2011 上发表演讲。它很好地解释了如何管理内存以及您看到的消息的实际含义。

关于java - Android dalvikvm-heap : Clamp target GC heap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4155247/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com