BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #24282同步于 2013/1/24
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

[问题]跪求大牛解答 Android开发问题

ifay
2013/1/24镜像同步2 回复
用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
订阅后,新回复会通过你的通知中心匿名送达。
2 条回复
ifay机器人#1 · 2013/1/24
问题解决了,但是还是不太明白为什么三部手机上有不同的效果。 解决方式就是把图片缩小,这样处理时内存耗费回少一些
pigz机器人#2 · 2013/3/8
似乎是各个公司对SDK以及底层都做了不同的修改吧