如何解决Android中的“HeapWorker楔入”错误?

前端之家收集整理的这篇文章主要介绍了如何解决Android中的“HeapWorker楔入”错误?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我从服务器中获取大量数据.我使用Get方法来获得响应,我能够得到响应,但问题是在解析应用程序之间崩溃是因为某些“HeapWorker被楔入”错误.

logcat的

  1. 12-20 10:02:55.111: ERROR/dalvikvm(277): HeapWorker is wedged: 10194ms spent inside Landroid/database/sqlite/sqliteCursor;.finalize()V
  2. 12-20 10:02:55.111: INFO/dalvikvm(277): DALVIK THREADS:
  3. 12-20 10:02:55.111: INFO/dalvikvm(277): "main" prio=5 tid=3 NATIVE
  4. 12-20 10:02:55.111: INFO/dalvikvm(277): | group="main" sCount=1 dsCount=0 s=Y obj=0x4001b268 self=0xbd00
  5. 12-20 10:02:55.111: INFO/dalvikvm(277): | sysTid=277 nice=0 sched=0/0 cgrp=default handle=-1344001384
  6. 12-20 10:02:55.111: INFO/dalvikvm(277): at android.graphics.NinePatch.nativeDraw(Native Method)
  7. 12-20 10:02:55.111: INFO/dalvikvm(277): at android.graphics.NinePatch.draw(NinePatch.java:104)
  8. 12-20 10:02:55.111: INFO/dalvikvm(277): at android.graphics.drawable.NinePatchDrawable.draw(NinePatchDrawable.java:188)
  9. 12-20 10:02:55.121: INFO/dalvikvm(277): at android.view.View.draw(View.java:6520)
  10. 12-20 10:02:55.121: INFO/dalvikvm(277): at android.widget.FrameLayout.draw(FrameLayout.java:352)
  11. 12-20 10:02:55.121: INFO/dalvikvm(277): at android.view.ViewGroup.drawChild(ViewGroup.java:1531)
  12. 12-20 10:02:55.121: INFO/dalvikvm(277): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
  13. 12-20 10:02:55.121: INFO/dalvikvm(277): at android.view.ViewGroup.drawChild(ViewGroup.java:1529)
  14. 12-20 10:02:55.121: INFO/dalvikvm(277): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
  15. 12-20 10:02:55.121: INFO/dalvikvm(277): at android.view.ViewGroup.drawChild(ViewGroup.java:1529)
  16. 12-20 10:02:55.121: INFO/dalvikvm(277): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
  17. 12-20 10:02:55.121: INFO/dalvikvm(277): at android.view.View.draw(View.java:6538)
  18. 12-20 10:02:55.121: INFO/dalvikvm(277): at android.widget.FrameLayout.draw(FrameLayout.java:352)
  19. 12-20 10:02:55.121: INFO/dalvikvm(277): at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:1830)
  20. 12-20 10:02:55.121: INFO/dalvikvm(277): at android.view.ViewRoot.draw(ViewRoot.java:1349)
  21. 12-20 10:02:55.121: INFO/dalvikvm(277): at android.view.ViewRoot.performTraversals(ViewRoot.java:1114)
  22. 12-20 10:02:55.121: INFO/dalvikvm(277): at android.view.ViewRoot.handleMessage(ViewRoot.java:1633)
  23. 12-20 10:02:55.132: INFO/dalvikvm(277): at android.os.Handler.dispatchMessage(Handler.java:99)
  24. 12-20 10:02:55.132: INFO/dalvikvm(277): at android.os.Looper.loop(Looper.java:123)
  25. 12-20 10:02:55.132: INFO/dalvikvm(277): at android.app.ActivityThread.main(ActivityThread.java:4363)
  26. 12-20 10:02:55.132: INFO/dalvikvm(277): at java.lang.reflect.Method.invokeNative(Native Method)
  27. 12-20 10:02:55.132: INFO/dalvikvm(277): at java.lang.reflect.Method.invoke(Method.java:521)
  28. 12-20 10:02:55.132: INFO/dalvikvm(277): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
  29. 12-20 10:02:55.132: INFO/dalvikvm(277): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
  30. 12-20 10:02:55.132: INFO/dalvikvm(277): at dalvik.system.NativeStart.main(Native Method)
  31. 12-20 10:02:55.132: INFO/dalvikvm(277): "AsyncTask #1" prio=5 tid=15 RUNNABLE
  32. 12-20 10:02:55.132: INFO/dalvikvm(277): | group="main" sCount=0 dsCount=0 s=N obj=0x44dd0bd0 self=0x125a30
  33. 12-20 10:02:55.132: INFO/dalvikvm(277): | sysTid=283 nice=0 sched=0/0 cgrp=default handle=1203016
  34. 12-20 10:02:55.132: INFO/dalvikvm(277): at java.io.BufferedWriter.<init>(BufferedWriter.java:~67)
  35. 12-20 10:02:55.132: INFO/dalvikvm(277): at uk.co.dodec.ukrcmobileapp.helper.UDFHelper.createHtml(UDFHelper.java:167)
  36. 12-20 10:02:55.132: INFO/dalvikvm(277): at uk.co.dodec.ukrcmobileapp.helper.XMLParser.parseUpdates(XMLParser.java:510)
  37. 12-20 10:02:55.132: INFO/dalvikvm(277): at uk.co.dodec.ukrcmobileapp.Homepage$getUpdateTask.doInBackground(Homepage.java:170)
  38. 12-20 10:02:55.132: INFO/dalvikvm(277): at uk.co.dodec.ukrcmobileapp.Homepage$getUpdateTask.doInBackground(Homepage.java:1)
  39. 12-20 10:02:55.132: INFO/dalvikvm(277): at android.os.AsyncTask$2.call(AsyncTask.java:185)
  40. 12-20 10:02:55.132: INFO/dalvikvm(277): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
  41. 12-20 10:02:55.132: INFO/dalvikvm(277): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
  42. 12-20 10:02:55.141: INFO/dalvikvm(277): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068)
  43. 12-20 10:02:55.141: INFO/dalvikvm(277): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561)
  44. 12-20 10:02:55.141: INFO/dalvikvm(277): at java.lang.Thread.run(Thread.java:1096)
  45. 12-20 10:02:55.141: INFO/dalvikvm(277): "Binder Thread #2" prio=5 tid=13 NATIVE
  46. 12-20 10:02:55.141: INFO/dalvikvm(277): | group="main" sCount=1 dsCount=0 s=N obj=0x44da1c38 self=0x11d3c8
  47. 12-20 10:02:55.141: INFO/dalvikvm(277): | sysTid=282 nice=0 sched=0/0 cgrp=default handle=1343552
  48. 12-20 10:02:55.141: INFO/dalvikvm(277): at dalvik.system.NativeStart.run(Native Method)
  49. 12-20 10:02:55.141: INFO/dalvikvm(277): "Binder Thread #1" prio=5 tid=11 NATIVE
  50. 12-20 10:02:55.141: INFO/dalvikvm(277): | group="main" sCount=1 dsCount=0 s=N obj=0x44d9dea8 self=0x14d8d0
  51. 12-20 10:02:55.141: INFO/dalvikvm(277): | sysTid=281 nice=0 sched=0/0 cgrp=default handle=1366160
  52. 12-20 10:02:55.141: INFO/dalvikvm(277): at dalvik.system.NativeStart.run(Native Method)
  53. 12-20 10:02:55.141: INFO/dalvikvm(277): "JDWP" daemon prio=5 tid=9 VMWAIT
  54. 12-20 10:02:55.141: INFO/dalvikvm(277): | group="system" sCount=1 dsCount=0 s=N obj=0x44d9b2a0 self=0x145338
  55. 12-20 10:02:55.141: INFO/dalvikvm(277): | sysTid=280 nice=0 sched=0/0 cgrp=default handle=1331744
  56. 12-20 10:02:55.141: INFO/dalvikvm(277): at dalvik.system.NativeStart.run(Native Method)
  57. 12-20 10:02:55.141: INFO/dalvikvm(277): "Signal Catcher" daemon prio=5 tid=7 VMWAIT
  58. 12-20 10:02:55.141: INFO/dalvikvm(277): | group="system" sCount=1 dsCount=0 s=N obj=0x44d9b1e8 self=0x145108
  59. 12-20 10:02:55.141: INFO/dalvikvm(277): | sysTid=279 nice=0 sched=0/0 cgrp=default handle=1262808
  60. 12-20 10:02:55.141: INFO/dalvikvm(277): at dalvik.system.NativeStart.run(Native Method)
  61. 12-20 10:02:55.151: INFO/dalvikvm(277): "HeapWorker" daemon prio=5 tid=5 WAIT
  62. 12-20 10:02:55.151: INFO/dalvikvm(277): | group="system" sCount=1 dsCount=0 s=N obj=0x4369a188 self=0x1343c0
  63. 12-20 10:02:55.151: INFO/dalvikvm(277): | sysTid=278 nice=0 sched=0/0 cgrp=default handle=1208016
  64. 12-20 10:02:55.151: INFO/dalvikvm(277): at java.lang.Object.wait(Native Method)
  65. 12-20 10:02:55.151: INFO/dalvikvm(277): - waiting on <0x3362f0> (a java.lang.VMThread)
  66. 12-20 10:02:55.151: INFO/dalvikvm(277): at java.lang.Thread.parkFor(Thread.java:1535)
  67. 12-20 10:02:55.151: INFO/dalvikvm(277): at java.lang.LangAccessImpl.parkFor(LangAccessImpl.java:48)
  68. 12-20 10:02:55.151: INFO/dalvikvm(277): at sun.misc.Unsafe.park(Unsafe.java:317)
  69. 12-20 10:02:55.151: INFO/dalvikvm(277): at java.util.concurrent.locks.LockSupport.park(LockSupport.java:131)
  70. 12-20 10:02:55.151: INFO/dalvikvm(277): at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:790)
  71. 12-20 10:02:55.151: INFO/dalvikvm(277): at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:823)
  72. 12-20 10:02:55.151: INFO/dalvikvm(277): at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1153)
  73. 12-20 10:02:55.151: INFO/dalvikvm(277): at java.util.concurrent.locks.ReentrantLock$FairSync.lock(ReentrantLock.java:200)
  74. 12-20 10:02:55.151: INFO/dalvikvm(277): at java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java:261)
  75. 12-20 10:02:55.151: INFO/dalvikvm(277): at android.database.sqlite.sqliteDatabase.lock(sqliteDatabase.java:305)
  76. 12-20 10:02:55.151: INFO/dalvikvm(277): at android.database.sqlite.sqliteProgram.close(sqliteProgram.java:219)
  77. 12-20 10:02:55.151: INFO/dalvikvm(277): at android.database.sqlite.sqliteQuery.close(sqliteQuery.java:141)
  78. 12-20 10:02:55.151: INFO/dalvikvm(277): at android.database.sqlite.sqliteCursor.close(sqliteCursor.java:507)
  79. 12-20 10:02:55.151: INFO/dalvikvm(277): at android.database.sqlite.sqliteCursor.finalize(sqliteCursor.java:586)
  80. 12-20 10:02:55.151: INFO/dalvikvm(277): at dalvik.system.NativeStart.run(Native Method)
  81. 12-20 10:02:55.151: ERROR/dalvikvm(277): VM aborting
  82. 12-20 10:02:55.296: INFO/DEBUG(28): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
  83. 12-20 10:02:55.296: INFO/DEBUG(28): signal 11 (SIGSEGV),fault addr deadd00d
  84. 12-20 10:02:55.296: INFO/DEBUG(28): r0 00000354 r1 afe1331d r2 0000000c r3 deadd00d
  85. 12-20 10:02:55.296: INFO/DEBUG(28): r4 00000026 r5 400091e8 r6 ad065714 r7 003fca30
  86. 12-20 10:02:55.296: INFO/DEBUG(28): r8 00000344 r9 00000001 10 ad080c00 fp 00000000
  87. 12-20 10:02:55.296: INFO/DEBUG(28): ip ad080160 sp 46a32c58 lr afe142dd pc ad035452 cpsr 20000030
  88. 12-20 10:02:55.391: INFO/DEBUG(28): #00 pc 00035452 /system/lib/libdvm.so
  89. 12-20 10:02:55.391: INFO/DEBUG(28): #01 pc 000440d8 /system/lib/libdvm.so
  90. 12-20 10:02:55.391: INFO/DEBUG(28): #02 pc 0001680c /system/lib/libdvm.so
  91. 12-20 10:02:55.391: INFO/DEBUG(28): #03 pc 000170c4 /system/lib/libdvm.so
  92. 12-20 10:02:55.391: INFO/DEBUG(28): #04 pc 0001724c /system/lib/libdvm.so
  93. 12-20 10:02:55.401: INFO/DEBUG(28): #05 pc 00055b52 /system/lib/libdvm.so
  94. 12-20 10:02:55.401: INFO/DEBUG(28): #06 pc 00055c80 /system/lib/libdvm.so
  95. 12-20 10:02:55.401: INFO/DEBUG(28): #07 pc 00055d80 /system/lib/libdvm.so
  96. 12-20 10:02:55.401: INFO/DEBUG(28): #08 pc 0001353c /system/lib/libdvm.so
  97. 12-20 10:02:55.411: INFO/DEBUG(28): #09 pc 00019888 /system/lib/libdvm.so
  98. 12-20 10:02:55.411: INFO/DEBUG(28): #10 pc 00018d5c /system/lib/libdvm.so
  99. 12-20 10:02:55.411: INFO/DEBUG(28): #11 pc 0004d6d0 /system/lib/libdvm.so
  100. 12-20 10:02:55.411: INFO/DEBUG(28): #12 pc 0004d702 /system/lib/libdvm.so
  101. 12-20 10:02:55.411: INFO/DEBUG(28): #13 pc 00041c78 /system/lib/libdvm.so
  102. 12-20 10:02:55.411: INFO/DEBUG(28): #14 pc 00010000 /system/lib/libc.so
  103. 12-20 10:02:55.411: INFO/DEBUG(28): #15 pc 0000fad4 /system/lib/libc.so
  104. 12-20 10:02:55.411: INFO/DEBUG(28): code around pc:
  105. 12-20 10:02:55.411: INFO/DEBUG(28): ad035440 4808ecb6 6b9b5823 d0002b00 4b064798
  106. 12-20 10:02:55.411: INFO/DEBUG(28): ad035450 701c2426 ed28f7d9 0004ab1c fffe57c4
  107. 12-20 10:02:55.411: INFO/DEBUG(28): ad035460 fffe8c30 00000354 deadd00d b510b40e
  108. 12-20 10:02:55.411: INFO/DEBUG(28): code around lr:
  109. 12-20 10:02:55.422: INFO/DEBUG(28): afe142cc 220ce008 2b005eab 1c28d003 47889901
  110. 12-20 10:02:55.422: INFO/DEBUG(28): afe142dc 35544306 d5f43f01 2c006824 b003d1ee
  111. 12-20 10:02:55.422: INFO/DEBUG(28): afe142ec bdf01c30 00024b44 000000b4 1c0fb5f0
  112. 12-20 10:02:55.422: INFO/DEBUG(28): stack:
  113. 12-20 10:02:55.422: INFO/DEBUG(28): 46a32c18 00000015
  114. 12-20 10:02:55.422: INFO/DEBUG(28): 46a32c1c afe1334d /system/lib/libc.so
  115. 12-20 10:02:55.422: INFO/DEBUG(28): 46a32c20 afe3902c /system/lib/libc.so
  116. 12-20 10:02:55.422: INFO/DEBUG(28): 46a32c24 afe38fd8 /system/lib/libc.so
  117. 12-20 10:02:55.422: INFO/DEBUG(28): 46a32c28 00000000
  118. 12-20 10:02:55.422: INFO/DEBUG(28): 46a32c2c afe142dd /system/lib/libc.so
  119. 12-20 10:02:55.422: INFO/DEBUG(28): 46a32c30 46a32c44
  120. 12-20 10:02:55.422: INFO/DEBUG(28): 46a32c34 afe1331d /system/lib/libc.so
  121. 12-20 10:02:55.422: INFO/DEBUG(28): 46a32c38 ad065714 /system/lib/libdvm.so
  122. 12-20 10:02:55.422: INFO/DEBUG(28): 46a32c3c ad07ff50 /system/lib/libdvm.so
  123. 12-20 10:02:55.422: INFO/DEBUG(28): 46a32c40 400091e8 /dev/ashmem/mspace/dalvik-heap/zygote/0 (deleted)
  124. 12-20 10:02:55.422: INFO/DEBUG(28): 46a32c44 ad065714 /system/lib/libdvm.so
  125. 12-20 10:02:55.431: INFO/DEBUG(28): 46a32c48 003fca30 [heap]
  126. 12-20 10:02:55.431: INFO/DEBUG(28): 46a32c4c afe1337f /system/lib/libc.so
  127. 12-20 10:02:55.431: INFO/DEBUG(28): 46a32c50 df002777
  128. 12-20 10:02:55.431: INFO/DEBUG(28): 46a32c54 e3a070ad
  129. 12-20 10:02:55.431: INFO/DEBUG(28): #00 46a32c58 ad06ccd7 /system/lib/libdvm.so
  130. 12-20 10:02:55.431: INFO/DEBUG(28): 46a32c5c ad0440dd /system/lib/libdvm.so
  131. 12-20 10:02:55.431: INFO/DEBUG(28): #01 46a32c60 000027d2
  132. 12-20 10:02:55.431: INFO/DEBUG(28): 46a32c64 00000000
  133. 12-20 10:02:55.431: INFO/DEBUG(28): 46a32c68 42a58733 /data/dalvik-cache/system@framework@framework.jar@classes.dex
  134. 12-20 10:02:55.431: INFO/DEBUG(28): 46a32c6c 42ad950b /data/dalvik-cache/system@framework@framework.jar@classes.dex
  135. 12-20 10:02:55.431: INFO/DEBUG(28): 46a32c70 003fca30 [heap]
  136. 12-20 10:02:55.431: INFO/DEBUG(28): 46a32c74 0000011b
  137. 12-20 10:02:55.431: INFO/DEBUG(28): 46a32c78 ad080f8c /system/lib/libdvm.so
  138. 12-20 10:02:55.431: INFO/DEBUG(28): 46a32c7c afe0f3b0 /system/lib/libc.so
  139. 12-20 10:02:55.431: INFO/DEBUG(28): 46a32c80 009b8cc3
  140. 12-20 10:02:55.431: INFO/DEBUG(28): 46a32c84 00000000
  141. 12-20 10:02:55.431: INFO/DEBUG(28): 46a32c88 00000354
  142. 12-20 10:02:55.431: INFO/DEBUG(28): 46a32c8c 400091e8 /dev/ashmem/mspace/dalvik-heap/zygote/0 (deleted)
  143. 12-20 10:02:55.431: INFO/DEBUG(28): 46a32c90 ad07ff50 /system/lib/libdvm.so
  144. 12-20 10:02:55.431: INFO/DEBUG(28): 46a32c94 00000354
  145. 12-20 10:02:55.431: INFO/DEBUG(28): 46a32c98 0000000a
  146. 12-20 10:02:55.431: INFO/DEBUG(28): 46a32c9c ad016810 /system/lib/libdvm.so

解决方法

我找到了解决问题的方法
我在解析数据和将数据插入数据库时​​使用事务.
但在这之间我试图从数据库获取一些值.
这样的层次结构如下
  1. <transaction>
  2. <Insert>
  3. <select>
  4. <insert>
  5. </transaction>

我正在尝试在数据库上运行select查询,而数据库在事务中.
实际上这里有一个关于concurrent transaction解决方

sql命令“BEGIN TRANSACTION”(TRANSACTION关键字是可选的)用于使sqlite脱离自动提交模式.请注意,BEGIN命令不会获取数据库上的任何锁定.在BEGIN命令之后,执行第一个SELECT语句时将获取SHARED锁.执行第一个INSERT,UPDATE或DELETE语句时将获取RESERVED锁.在内存缓存填满并且必须溢出到磁盘或事务提交之前,不会获取EXCLUSIVE锁.通过这种方式,系统延迟阻止对文件文件的读访问,直到最后一刻.

我只是在数据库处于事务中时从代码删除了选择查询

编辑

另外还有一个解决方案是你设置锁定启用false就像

  1. mDb.setLockingEnabled(false);

猜你在找的Android相关文章