Android dalvikvm-heap: Clamp target GC heap
2022-09-02 01:59:55
我正在编写一个程序,以将大量联系人与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
我在循环中插入了以下日志语句,其中写入了我的contatcs下载逻辑。
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的新手,所以请轻松:).....