当我在sql server& sqlite我收到此错误“GC_FOR_MALLOC”

时间:2011-08-05 04:20:10

标签: android heap

我想与SQL server 2008& amp; sqlite.Coding明智的确定。一切都很完美。但是在开始下载之后,在表上插入或更新了几条记录之后,它就说出这个错误了。&屏幕进入初始屏幕....

      08-05 09:34:40.798: DEBUG/dalvikvm(278): GC_FOR_MALLOC freed 5159 objects / 408216 bytes in 64ms
08-05 09:34:40.898: DEBUG/dalvikvm(278): GC_FOR_MALLOC freed 480 objects / 52832 bytes in 60ms
08-05 09:34:40.908: INFO/dalvikvm-heap(278): Grow heap (frag case) to 3.162MB for 130576-byte allocation
08-05 09:34:40.998: DEBUG/dalvikvm(278): GC_FOR_MALLOC freed 14 objects / 65568 bytes in 84ms
08-05 09:34:41.138: DEBUG/dalvikvm(278): GC_FOR_MALLOC freed 2 objects / 48 bytes in 81ms
08-05 09:34:41.138: INFO/dalvikvm-heap(278): Grow heap (frag case) to 3.349MB for 261648-byte allocation
08-05 09:34:41.308: DEBUG/dalvikvm(278): GC_FOR_MALLOC freed 1 objects / 130584 bytes in 159ms
08-05 09:34:41.438: DEBUG/dalvikvm(278): GC_FOR_MALLOC freed 2 objects / 48 bytes in 72ms
08-05 09:34:41.448: INFO/dalvikvm-heap(278): Grow heap (frag case) to 3.724MB for 523792-byte allocation
08-05 09:34:41.688: DEBUG/dalvikvm(278): GC_FOR_MALLOC freed 1 objects / 261656 bytes in 230ms
08-05 09:34:41.798: DEBUG/dalvikvm(278): GC_FOR_MALLOC freed 20 objects / 984 bytes in 90ms
08-05 09:34:41.808: INFO/dalvikvm-heap(278): Grow heap (frag case) to 4.000MB for 220664-byte allocation
08-05 09:34:41.878: DEBUG/dalvikvm(278): GC_FOR_MALLOC freed 0 objects / 0 bytes in 73ms
08-05 09:34:41.988: DEBUG/dalvikvm(278): GC_FOR_MALLOC freed 0 objects / 0 bytes in 102ms
08-05 09:34:41.988: INFO/dalvikvm-heap(278): Grow heap (frag case) to 4.420MB for 441312-byte allocation
08-05 09:34:42.068: DEBUG/dalvikvm(278): GC_FOR_MALLOC freed 0 objects / 0 bytes in 75ms
08-05 09:34:42.068: INFO/dalvikvm-heap(278): Grow heap (frag case) to 4.631MB for 220664-byte allocation
08-05 09:34:42.298: DEBUG/dalvikvm(278): GC_FOR_MALLOC freed 1 objects / 220672 bytes in 227ms
08-05 09:34:42.448: DEBUG/dalvikvm(278): GC_FOR_MALLOC freed 2 objects / 220720 bytes in 149ms
08-05 09:34:42.758: INFO/dalvikvm-heap(278): Grow heap (frag case) to 5.052MB for 882608-byte allocation
08-05 09:34:42.908: DEBUG/dalvikvm(278): GC_FOR_MALLOC freed 0 objects / 0 bytes in 147ms
08-05 09:34:43.058: DEBUG/dalvikvm(278): GC_FOR_MALLOC freed 0 objects / 0 bytes in 153ms
08-05 09:34:43.068: INFO/dalvikvm-heap(278): Grow heap (frag case) to 5.473MB for 441312-byte allocation
08-05 09:34:43.168: DEBUG/dalvikvm(278): GC_FOR_MALLOC freed 7 objects / 882832 bytes in 91ms
08-05 09:34:44.008: DEBUG/dalvikvm(278): GC_FOR_MALLOC freed 45 objects / 467072 bytes in 67ms
08-05 09:34:44.658: DEBUG/dalvikvm(278): GC_FOR_MALLOC freed 11 objects / 363568 bytes in 69ms
08-05 09:34:45.188: DEBUG/dalvikvm(278): GC_FOR_MALLOC freed 9 objects / 277048 bytes in 68ms
08-05 09:34:45.848: DEBUG/dalvikvm(278): GC_FOR_MALLOC freed 11 objects / 369384 bytes in 68ms
08-05 09:34:46.758: DEBUG/dalvikvm(278): GC_FOR_MALLOC freed 13 objects / 492464 bytes in 77ms
08-05 09:34:46.758: INFO/dalvikvm-heap(278): Grow heap (frag case) to 6.116MB for 874544-byte allocation
08-05 09:34:46.928: DEBUG/dalvikvm(278): GC_FOR_MALLOC freed 1 objects / 655912 bytes in 156ms
08-05 09:34:47.218: DEBUG/dalvikvm(278): GC_FOR_MALLOC freed 4668 objects / 2800512 bytes in 68ms
08-05 09:34:47.578: DEBUG/dalvikvm(278): GC_FOR_MALLOC freed 6108 objects / 209152 bytes in 87ms
08-05 09:34:47.948: DEBUG/dalvikvm(278): GC_FOR_MALLOC freed 6592 objects / 224560 bytes in 94ms
08-05 09:34:48.408: DEBUG/dalvikvm(278): GC_FOR_MALLOC freed 7866 objects / 269816 bytes in 106ms
08-05 09:35:30.348: DEBUG/dalvikvm(278): GC_FOR_MALLOC freed 8182 objects / 346272 bytes in 125ms
08-05 09:36:43.779: INFO/ActivityManager(58): Process android.process.acore (pid 160) has died.
08-05 09:36:43.918: DEBUG/dalvikvm(278): GC_FOR_MALLOC freed 14265 objects / 696136 bytes in 174ms
08-05 09:38:00.298: DEBUG/dalvikvm(278): GC_FOR_MALLOC freed 20285 objects / 995336 bytes in 233ms
08-05 09:38:00.298: ERROR/dalvikvm(278): HeapWorker is wedged: 78178ms spent inside Lcom/android/internal/os/BinderInternal$GcWatcher;.finalize()V

在编码中我使用String& stringBuffer.some表包含1000条以上的记录.....

我在模拟器上运行它。堆大小是200MB,这是我设置。电话存储它显示21 MB(内部存储器)......

我也已阅读此链接What do GC_FOR_MALLOC, GC_EXPLICIT, and other GC_* mean in Android Logcat?

在我的代码中我也使用System.out.println()进行测试。那个asloss和logcat显示了很多消息,这也是性能问题吗? 这是什么解决方案? 请帮帮我...

提前致谢

1 个答案:

答案 0 :(得分:0)

嗯,GC通常只在需要时执行。尝试调试代码以查看可能正在使用如此多内存的内容。堆上必须没有足够的内存来执行分配。

好奇,您是否正在为此类应用程序使用套接字?我听说过用Java编写的Android上的前端应用程序通过套接字连接到用C编写的后端服务器(不是“服务”,用Android术语)。在压力测试期间,服务器被杀死看到应用程序将如何反应。发生这种情况时,设备会以这种错误淹没日志。这是因为有一个单独的线程在连接后运行,它会发送数据请求,期望从不再存在的服务器接收回来的东西。

也许您的应用程序或Web服务器认为它仍然处于连接状态,正在运行正在尝试发送/接收数据的进程或类似的东西。