返回信息流用Android编写了一个图形处理的程序,其中图形处理部分使用的是cpp编写的。使用NDK+JNI实现CPP于Java的衔接。
程序分别在三星 I9100G(4.0.4系统),小米1s(4.0.4系统),htc s710d(2.3.4系统)上运行,结果只有三星能正常运行,小米手机直接没有任何反应,htc显示程序挂掉了
看logcat记录,貌似是由于内存分配问题,但是个人水平实在有限,求各位大牛帮忙分析下
下面是三星的logcat
1-24 11:25:44.677: D/CLIPBOARD(15157): Hide Clipboard dialog at Starting input: finished by someone else... !
01-24 11:25:55.294: D/dalvikvm(15157): GC_FOR_ALLOC freed 63821K, 86% free 10655K/75527K, paused 31ms
01-24 11:25:55.317: I/dalvikvm-heap(15157): Grow heap (frag case) to 41.734MB for 31961104-byte allocation
01-24 11:25:55.364: D/dalvikvm(15157): GC_FOR_ALLOC freed 1382K, 47% free 40484K/75527K, paused 31ms
01-24 11:25:55.419: D/dalvikvm(15157): GC_CONCURRENT freed 22K, 47% free 40461K/75527K, paused 4ms+6ms
01-24 11:25:55.903: D/dalvikvm(15157): GC_FOR_ALLOC freed 32K, 47% free 40429K/75527K, paused 12ms
01-24 11:25:55.919: I/dalvikvm-heap(15157): Grow heap (frag case) to 70.811MB for 31961104-byte allocation
01-24 11:25:55.942: D/dalvikvm(15157): GC_FOR_ALLOC freed 0K, 6% free 71641K/75527K, paused 15ms
01-24 11:25:55.989: D/dalvikvm(15157): GC_CONCURRENT freed 0K, 6% free 71642K/75527K, paused 1ms+8ms
01-24 11:26:00.059: D/dalvikvm(15157): GC_FOR_ALLOC freed <1K, 6% free 71641K/75527K, paused 22ms
01-24 11:26:00.059: I/dalvikvm-heap(15157): Grow heap (frag case) to 72.876MB for 2166016-byte allocation
01-24 11:26:00.091: D/dalvikvm(15157): GC_CONCURRENT freed 0K, 3% free 73757K/75527K, paused 1ms+4ms
01-24 11:26:00.122: D/dalvikvm(15157): GC_FOR_ALLOC freed <1K, 3% free 73757K/75527K, paused 27ms
01-24 11:26:00.122: I/dalvikvm-heap(15157): Grow heap (frag case) to 74.942MB for 2166016-byte allocation
01-24 11:26:00.184: D/dalvikvm(15157): GC_CONCURRENT freed 0K, 3% free 75872K/77703K, paused 4ms+6ms
这个是小米的logcat
01-24 11:26:51.910: D/memalloc(11701): ion: Unmapping buffer base:0x5bd92000 size:1658880
01-24 11:26:51.910: D/memalloc(11701): ion: Unmapping buffer base:0x5c127000 size:1658880
01-24 11:26:52.890: W/IInputConnectionWrapper(11701): showStatusIcon on inactive InputConnection
01-24 11:27:04.420: W/System.err(11701): java.lang.NullPointerException
01-24 11:27:04.420: W/System.err(11701): at android.content.ContentResolver.openInputStream(ContentResolver.java:355)
01-24 11:27:04.420: W/System.err(11701): at com.example.helloworld.MainActivity.onActivityResult(MainActivity.java:116)
01-24 11:27:04.420: W/System.err(11701): at android.app.Activity.dispatchActivityResult(Activity.java:4655)
01-24 11:27:04.420: W/System.err(11701): at android.app.ActivityThread.deliverResults(ActivityThread.java:2989)
01-24 11:27:04.420: W/System.err(11701): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2444)
01-24 11:27:04.420: W/System.err(11701): at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2485)
01-24 11:27:04.420: W/System.err(11701): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1999)
01-24 11:27:04.420: W/System.err(11701): at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3364)
01-24 11:27:04.420: W/System.err(11701): at android.app.ActivityThread.access$700(ActivityThread.java:126)
01-24 11:27:04.420: W/System.err(11701): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1154)
01-24 11:27:04.420: W/System.err(11701): at android.os.Handler.dispatchMessage(Handler.java:99)
01-24 11:27:04.420: W/System.err(11701): at android.os.Looper.loop(Looper.java:137)
01-24 11:27:04.420: W/System.err(11701): at android.app.ActivityThread.main(ActivityThread.java:4439)
01-24 11:27:04.420: W/System.err(11701): at java.lang.reflect.Method.invokeNative(Native Method)
01-24 11:27:04.420: W/System.err(11701): at java.lang.reflect.Method.invoke(Method.java:511)
01-24 11:27:04.420: W/System.err(11701): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:787)
01-24 11:27:04.420: W/System.err(11701): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:554)
01-24 11:27:04.420: W/System.err(11701): at dalvik.system.NativeStart.main(Native Method)
01-24 11:27:04.520: D/memalloc(11701): ion: Mapped buffer base:0x5bd92000 size:1658880 offset:0 fd:56
01-24 11:27:04.550: D/memalloc(11701): ion: Mapped buffer base:0x5c127000 size:1658880 offset:0 fd:63
这个是htc的logcat
01-24 11:27:42.727: D/ATRecorder(18559): com.htc.autotest.dlib.RecordEngine in loader dalvik.system.DexClassLoader@405268f8
01-24 11:27:48.823: W/IInputConnectionWrapper(18559): showStatusIcon on inactive InputConnection
01-24 11:27:48.923: W/IInputConnectionWrapper(18559): InputConnection = android.view.inputmethod.BaseInputConnection@40528738, active client = false
01-24 11:27:56.991: D/dalvikvm(18559): GC_EXTERNAL_ALLOC freed 67K, 47% free 2884K/5379K, external 0K/0K, paused 203ms
01-24 11:27:57.031: E/dalvikvm-heap(18559): 31961088-byte external allocation too large for this process.
01-24 11:27:57.031: E/dalvikvm(18559): Out of memory: Heap Size=5379KB, Allocated=2884KB, Bitmap Size=0KB, Limit=32768KB
01-24 11:27:57.031: E/dalvikvm(18559): Trim info: Footprint=5379KB, Allowed Footprint=5379KB, Trimmed=520KB
01-24 11:27:57.031: E/GraphicsJNI(18559): VM won't let us allocate 31961088 bytes
01-24 11:27:57.081: D/dalvikvm(18559): GC_FOR_MALLOC freed 1K, 47% free 2883K/5379K, external 0K/0K, paused 64ms
01-24 11:27:57.101: D/skia(18559): --- decoder->decode returned false
01-24 11:27:57.101: D/AndroidRuntime(18559): Shutting down VM
01-24 11:27:57.101: W/dalvikvm(18559): threadid=1: thread exiting with uncaught exception (group=0x4001d5a0)
01-24 11:27:57.101: E/AndroidRuntime(18559): FATAL EXCEPTION: main
01-24 11:27:57.101: E/AndroidRuntime(18559): java.lang.OutOfMemoryError: bitmap size exceeds VM budget(Heap Size=5763KB, Allocated=2883KB, Bitmap Size=0KB)
01-24 11:27:57.101: E/AndroidRuntime(18559): at android.graphics.BitmapFactory.nativeDecodeStream(Native Method)
01-24 11:27:57.101: E/AndroidRuntime(18559): at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:690)
01-24 11:27:57.101: E/AndroidRuntime(18559): at com.example.helloworld.MainActivity.onActivityResult(MainActivity.java:116)
01-24 11:27:57.101: E/AndroidRuntime(18559): at android.app.Activity.dispatchActivityResult(Activity.java:4108)
01-24 11:27:57.101: E/AndroidRuntime(18559): at android.app.ActivityThread.deliverResults(ActivityThread.java:2949)
01-24 11:27:57.101: E/AndroidRuntime(18559): at android.app.ActivityThread.handleSendResult(ActivityThread.java:3005)
01-24 11:27:57.101: E/AndroidRuntime(18559): at android.app.ActivityThread.access$2000(ActivityThread.java:132)
01-24 11:27:57.101: E/AndroidRuntime(18559): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1081)
01-24 11:27:57.101: E/AndroidRuntime(18559): at android.os.Handler.dispatchMessage(Handler.java:99)
01-24 11:27:57.101: E/AndroidRuntime(18559): at android.os.Looper.loop(Looper.java:150)
01-24 11:27:57.101: E/AndroidRuntime(18559): at android.app.ActivityThread.main(ActivityThread.java:4312)
01-24 11:27:57.101: E/AndroidRuntime(18559): at java.lang.reflect.Method.invokeNative(Native Method)
01-24 11:27:57.101: E/AndroidRuntime(18559): at java.lang.reflect.Method.invoke(Method.java:507)
01-24 11:27:57.101: E/AndroidRuntime(18559): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:849)
01-24 11:27:57.101: E/AndroidRuntime(18559): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:607)
01-24 11:27:57.101: E/AndroidRuntime(18559): at dalvik.system.NativeStart.main(Native Method)
01-24 11:28:00.984: D/Process(18559): killProcess, pid=18559
01-24 11:28:00.994: D/Process(18559): dalvik.system.VMStack.getThreadStackTrace(Native Method)
01-24 11:28:01.004: D/Process(18559): java.lang.Thread.getStackTrace(Thread.java:745)
01-24 11:28:01.004: D/Process(18559): android.os.Process.killProcess(Process.java:797)
01-24 11:28:01.015: D/Process(18559): com.android.internal.os.RuntimeInit$UncaughtHandler.uncaughtException(RuntimeInit.java:108)
01-24 11:28:01.015: D/Process(18559): java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:854)
01-24 11:28:01.015: D/Process(18559): java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:851)
01-24 11:28:01.015: D/Process(18559): dalvik.system.NativeStart.main(Native Method)
01-24 11:28:01.015: I/Process(18559): Sending signal. PID: 18559 SIG: 9
这是一条镜像帖。来源:北邮人论坛 / java / #24282同步于 2013/1/24
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
[问题]跪求大牛解答 Android开发问题
ifay
2013/1/24镜像同步2 回复
订阅后,新回复会通过你的通知中心匿名送达。