在仿真器1.6上运行单元测试时,Dalvikvm因“LinearAlloc超出容量”而崩溃

时间:2012-05-02 12:46:15

标签: android unit-testing

我有一个图书馆项目,还有一些单元测试。 在仿真器v1.6上运行单元测试时,我得到“LinearAlloc超出容量,最后= 3136”崩溃。 相同的测试项目在模拟器v2.1及更高版本上运行良好。

有没有办法解决这个问题?

请参阅堆栈跟踪:

05-02 11:27:01.450: E/dalvikvm(558): LinearAlloc exceeded capacity, last=3136
05-02 11:27:01.450: E/dalvikvm(558): VM aborting
05-02 11:27:01.550: I/DEBUG(28): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
05-02 11:27:01.550: I/DEBUG(28): Build fingerprint: 'generic/sdk/generic/:1.6/Donut/20842:eng/test-keys'
05-02 11:27:01.550: I/DEBUG(28): pid: 558, tid: 574  >>> com.***.android <<<
05-02 11:27:01.550: I/DEBUG(28): signal 11 (SIGSEGV), fault addr deadd00d
05-02 11:27:01.550: I/DEBUG(28):  r0 0000032c  r1 80000000  r2 0000000c  r3 00000026
05-02 11:27:01.550: I/DEBUG(28):  r4 deadd00d  r5 00400088  r6 ad083e1c  r7 003ff43c
05-02 11:27:01.550: I/DEBUG(28):  r8 00003071  r9 002ab040  10 424bfd00  fp 00000001
05-02 11:27:01.550: I/DEBUG(28):  ip ad083ef8  sp 45089c50  lr afe13f0d  pc ad03b7fa  cpsr 20000030
05-02 11:27:01.680: I/DEBUG(28):          #00  pc 0003b7fa  /system/lib/libdvm.so
05-02 11:27:01.690: I/DEBUG(28):          #01  pc 00042892  /system/lib/libdvm.so
05-02 11:27:01.690: I/DEBUG(28):          #02  pc 00060a10  /system/lib/libdvm.so
05-02 11:27:01.700: I/DEBUG(28):          #03  pc 00059f10  /system/lib/libdvm.so
05-02 11:27:01.700: I/DEBUG(28):          #04  pc 00013198  /system/lib/libdvm.so
05-02 11:27:01.700: I/DEBUG(28):          #05  pc 00017be4  /system/lib/libdvm.so
05-02 11:27:01.700: I/DEBUG(28):          #06  pc 0001762c  /system/lib/libdvm.so
05-02 11:27:01.700: I/DEBUG(28):          #07  pc 000529a8  /system/lib/libdvm.so
05-02 11:27:01.710: I/DEBUG(28):          #08  pc 00059eda  /system/lib/libdvm.so
05-02 11:27:01.710: I/DEBUG(28):          #09  pc 00013198  /system/lib/libdvm.so
05-02 11:27:01.710: I/DEBUG(28):          #10  pc 00017be4  /system/lib/libdvm.so
05-02 11:27:01.710: I/DEBUG(28):          #11  pc 0001762c  /system/lib/libdvm.so
05-02 11:27:01.720: I/DEBUG(28):          #12  pc 0005282c  /system/lib/libdvm.so
05-02 11:27:01.720: I/DEBUG(28):          #13  pc 0005284a  /system/lib/libdvm.so
05-02 11:27:01.720: I/DEBUG(28):          #14  pc 00047800  /system/lib/libdvm.so
05-02 11:27:01.720: I/DEBUG(28):          #15  pc 0000f940  /system/lib/libc.so
05-02 11:27:01.720: I/DEBUG(28):          #16  pc 0000f4b4  /system/lib/libc.so
05-02 11:27:01.730: I/DEBUG(28): stack:
05-02 11:27:01.730: I/DEBUG(28):     45089c10  000b1210  [heap]
05-02 11:27:01.730: I/DEBUG(28):     45089c14  afe12f59  /system/lib/libc.so
05-02 11:27:01.730: I/DEBUG(28):     45089c18  afe39f90  /system/lib/libc.so
05-02 11:27:01.730: I/DEBUG(28):     45089c1c  afe39fe4  /system/lib/libc.so
05-02 11:27:01.730: I/DEBUG(28):     45089c20  00000000  
05-02 11:27:01.730: I/DEBUG(28):     45089c24  afe13f0d  /system/lib/libc.so
05-02 11:27:01.730: I/DEBUG(28):     45089c28  0000000d  
05-02 11:27:01.730: I/DEBUG(28):     45089c2c  afe12f29  /system/lib/libc.so
05-02 11:27:01.730: I/DEBUG(28):     45089c30  000111b8  [heap]
05-02 11:27:01.740: I/DEBUG(28):     45089c34  ad083e1c  /system/lib/libdvm.so
05-02 11:27:01.740: I/DEBUG(28):     45089c38  00400088  [heap]
05-02 11:27:01.740: I/DEBUG(28):     45089c3c  ad083e1c  /system/lib/libdvm.so
05-02 11:27:01.740: I/DEBUG(28):     45089c40  003ff43c  [heap]
05-02 11:27:01.740: I/DEBUG(28):     45089c44  afe12f8d  /system/lib/libc.so
05-02 11:27:01.740: I/DEBUG(28):     45089c48  df002777  
05-02 11:27:01.740: I/DEBUG(28):     45089c4c  e3a070ad  
05-02 11:27:01.740: I/DEBUG(28): #00 45089c50  000111b8  [heap]
05-02 11:27:01.740: I/DEBUG(28):     45089c54  ad042897  /system/lib/libdvm.so
05-02 11:27:01.740: I/DEBUG(28): #01 45089c58  ad083e1c  /system/lib/libdvm.so
05-02 11:27:01.740: I/DEBUG(28):     45089c5c  00000001  
05-02 11:27:01.740: I/DEBUG(28):     45089c60  00000c40  
05-02 11:27:01.750: I/DEBUG(28):     45089c64  0000000a  
05-02 11:27:01.750: I/DEBUG(28):     45089c68  00400084  [heap]
05-02 11:27:01.750: I/DEBUG(28):     45089c6c  000111bc  [heap]
05-02 11:27:01.750: I/DEBUG(28):     45089c70  5000121c  
05-02 11:27:01.750: I/DEBUG(28):     45089c74  000001c0  
05-02 11:27:01.750: I/DEBUG(28):     45089c78  ad083e1c  /system/lib/libdvm.so
05-02 11:27:01.750: I/DEBUG(28):     45089c7c  43ed1790  /dev/ashmem/mspace/dalvik-heap/2 (deleted)
05-02 11:27:01.760: I/DEBUG(28):     45089c80  4144b400  /dev/ashmem/dalvik-LinearAlloc (deleted)
05-02 11:27:01.760: I/DEBUG(28):     45089c84  ad060a15  /system/lib/libdvm.so
05-02 11:27:01.810: D/dalvikvm(551): GC freed 10165 objects / 534720 bytes in 36ms
05-02 11:27:03.019: D/dalvikvm(551): GC freed 9963 objects / 523736 bytes in 54ms
05-02 11:27:07.659: D/Zygote(30): Process 558 terminated by signal (11)
05-02 11:27:07.670: I/ActivityManager(68): Process com.***.android (pid 558) has died.
05-02 11:27:07.670: W/ActivityManager(68): Crash of app com.***.android running instrumentation ComponentInfo{com.***.android.test/android.test.InstrumentationTestRunner}
05-02 11:27:07.670: D/ActivityManager(68): Uninstalling process com.***.android
05-02 11:27:07.680: D/AndroidRuntime(551): Shutting down VM
05-02 11:27:07.680: D/dalvikvm(551): DestroyJavaVM waiting for non-daemon threads to exit
05-02 11:27:07.680: D/dalvikvm(551): DestroyJavaVM shutting VM down
05-02 11:27:07.680: D/dalvikvm(551): HeapWorker thread shutting down
05-02 11:27:07.680: D/dalvikvm(551): HeapWorker thread has shut down
05-02 11:27:07.680: D/jdwp(551): JDWP shutting down net...
05-02 11:27:07.680: D/jdwp(551): Got wake-up signal, bailing out of select
05-02 11:27:07.680: I/dalvikvm(551): Debugger has detached; object registry had 1 entries
05-02 11:27:07.680: D/dalvikvm(551): VM cleaning up
05-02 11:27:07.690: D/dalvikvm(551): LinearAlloc 0x0 used 684532 of 4194304 (16%)

1 个答案:

答案 0 :(得分:0)

同样的问题,我发现了这个:

“这是Dalvik在异常复杂的界面层次结构中触发的限制。

http://code.google.com/p/android/issues/detail?id=22586

详细了解有关解决方法的建议。简单的答案可能是尝试使用不太复杂的不同库。

修复程序已合并到Android AOSP中。 https://android-review.googlesource.com/#/c/30900/