不知道是第几次遇到outofmemory错误

做原生书时,突然有一天,进入到主程序时提示outofmemory错误,我擦。错误代码如下:

11-08 05:11:25.245: I/dalvikvm(27864): "main" prio=5 tid=1 RUNNABLE
11-08 05:11:25.245: I/dalvikvm(27864):   | group="main" sCount=0 dsCount=0 obj=0x410009a0 self=0x40fea898
11-08 05:11:25.245: I/dalvikvm(27864):   | sysTid=27864 nice=0 sched=0/0 cgrp=apps handle=1074406876
11-08 05:11:25.245: I/dalvikvm(27864):   | state=R schedstat=( 855573396 204379937 3179 ) utm=72 stm=13 core=1
11-08 05:11:25.245: I/dalvikvm(27864):   at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
11-08 05:11:25.245: I/dalvikvm(27864):   at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:596)
11-08 05:11:25.245: I/dalvikvm(27864):   at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:444)
11-08 05:11:25.245: I/dalvikvm(27864):   at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:817)
11-08 05:11:25.250: I/dalvikvm(27864):   at android.content.res.Resources.loadDrawable(Resources.java:2854)
11-08 05:11:25.250: I/dalvikvm(27864):   at android.content.res.Resources.getDrawable(Resources.java:1521)
11-08 05:11:25.250: I/dalvikvm(27864):   at com.sea.testRatingBar.BookPageAdapter.getView(BookPageAdapter.java:87)
11-08 05:11:25.250: I/dalvikvm(27864):   at com.aphidmobile.flip.FlipViewController.viewFromAdapter(FlipViewController.java:502)
11-08 05:11:25.250: I/dalvikvm(27864):   at com.aphidmobile.flip.FlipViewController.setSelection(FlipViewController.java:351)
11-08 05:11:25.250: I/dalvikvm(27864):   at com.aphidmobile.flip.FlipViewController.setAdapter(FlipViewController.java:332)
11-08 05:11:25.250: I/dalvikvm(27864):   at com.aphidmobile.flip.FlipViewController.setAdapter(FlipViewController.java:316)
11-08 05:11:25.250: I/dalvikvm(27864):   at com.sea.testRatingBar.MainNewActivity.onCreate(MainNewActivity.java:103)
11-08 05:11:25.250: I/dalvikvm(27864):   at android.app.Activity.performCreate(Activity.java:5255)
11-08 05:11:25.250: I/dalvikvm(27864):   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1097)
11-08 05:11:25.250: I/dalvikvm(27864):   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2213)
11-08 05:11:25.250: I/dalvikvm(27864):   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2299)
11-08 05:11:25.250: I/dalvikvm(27864):   at android.app.ActivityThread.access$700(ActivityThread.java:154)
11-08 05:11:25.250: I/dalvikvm(27864):   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1284)
11-08 05:11:25.250: I/dalvikvm(27864):   at android.os.Handler.dispatchMessage(Handler.java:99)
11-08 05:11:25.250: I/dalvikvm(27864):   at android.os.Looper.loop(Looper.java:137)
11-08 05:11:25.250: I/dalvikvm(27864):   at android.app.ActivityThread.main(ActivityThread.java:5306)
11-08 05:11:25.250: I/dalvikvm(27864):   at java.lang.reflect.Method.invokeNative(Native Method)
11-08 05:11:25.250: I/dalvikvm(27864):   at java.lang.reflect.Method.invoke(Method.java:511)
11-08 05:11:25.250: I/dalvikvm(27864):   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
11-08 05:11:25.250: I/dalvikvm(27864):   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
11-08 05:11:25.250: I/dalvikvm(27864):   at dalvik.system.NativeStart.main(Native Method)
11-08 05:11:25.250: D/skia(27864): --- decoder->decode returned false
11-08 05:11:25.250: D/AndroidRuntime(27864): Shutting down VM
11-08 05:11:25.250: W/dalvikvm(27864): threadid=1: thread exiting with uncaught exception (group=0x40fff930)
11-08 05:11:25.250: E/AndroidRuntime(27864): FATAL EXCEPTION: main
11-08 05:11:25.250: E/AndroidRuntime(27864): java.lang.OutOfMemoryError
11-08 05:11:25.250: E/AndroidRuntime(27864): 	at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
11-08 05:11:25.250: E/AndroidRuntime(27864): 	at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:596)
11-08 05:11:25.250: E/AndroidRuntime(27864): 	at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:444)
11-08 05:11:25.250: E/AndroidRuntime(27864): 	at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:817)
11-08 05:11:25.250: E/AndroidRuntime(27864): 	at android.content.res.Resources.loadDrawable(Resources.java:2854)
11-08 05:11:25.250: E/AndroidRuntime(27864): 	at android.content.res.Resources.getDrawable(Resources.java:1521)
11-08 05:11:25.250: E/AndroidRuntime(27864): 	at com.sea.testRatingBar.BookPageAdapter.getView(BookPageAdapter.java:87)
11-08 05:11:25.250: E/AndroidRuntime(27864): 	at com.aphidmobile.flip.FlipViewController.viewFromAdapter(FlipViewController.java:502)
11-08 05:11:25.250: E/AndroidRuntime(27864): 	at com.aphidmobile.flip.FlipViewController.setSelection(FlipViewController.java:351)
11-08 05:11:25.250: E/AndroidRuntime(27864): 	at com.aphidmobile.flip.FlipViewController.setAdapter(FlipViewController.java:332)
11-08 05:11:25.250: E/AndroidRuntime(27864): 	at com.aphidmobile.flip.FlipViewController.setAdapter(FlipViewController.java:316)
11-08 05:11:25.250: E/AndroidRuntime(27864): 	at com.sea.testRatingBar.MainNewActivity.onCreate(MainNewActivity.java:103)
11-08 05:11:25.250: E/AndroidRuntime(27864): 	at android.app.Activity.performCreate(Activity.java:5255)
11-08 05:11:25.250: E/AndroidRuntime(27864): 	at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1097)
11-08 05:11:25.250: E/AndroidRuntime(27864): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2213)
11-08 05:11:25.250: E/AndroidRuntime(27864): 	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2299)
11-08 05:11:25.250: E/AndroidRuntime(27864): 	at android.app.ActivityThread.access$700(ActivityThread.java:154)
11-08 05:11:25.250: E/AndroidRuntime(27864): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1284)
11-08 05:11:25.250: E/AndroidRuntime(27864): 	at android.os.Handler.dispatchMessage(Handler.java:99)
11-08 05:11:25.250: E/AndroidRuntime(27864): 	at android.os.Looper.loop(Looper.java:137)
11-08 05:11:25.250: E/AndroidRuntime(27864): 	at android.app.ActivityThread.main(ActivityThread.java:5306)
11-08 05:11:25.250: E/AndroidRuntime(27864): 	at java.lang.reflect.Method.invokeNative(Native Method)
11-08 05:11:25.250: E/AndroidRuntime(27864): 	at java.lang.reflect.Method.invoke(Method.java:511)
11-08 05:11:25.250: E/AndroidRuntime(27864): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
11-08 05:11:25.250: E/AndroidRuntime(27864): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
11-08 05:11:25.250: E/AndroidRuntime(27864): 	at dalvik.system.NativeStart.main(Native Method)

查了一下 bookpageadapter.getView() 87行的错误

竟然是这句话报错:

bookview.setBackground(c.getResources().getDrawable(R.drawable.bg3_single));
报错显示占用了 16588816-byte~~~16M的内存,这tm不是开玩笑么。

一查图片大小:16KB。找找原因吧。

解决方案:


 


down vote accepted

I solved! All your hints were good but the real problem was the "/drawable" folder! I had all the pictures in "/drawable" generic folder that is considered by the system like "/drawable/mdpi", so when I were running in devices with hdpi or more the images were resized, and became too big which cause OutOfMemoryException!

Now i'm using "/drawable-nodpi" to store my images. This folder works like "/drawable" but the images are never resized!


内容转自:http://stackoverflow.com/questions/14096061/android-setbackgroundresource-cause-out-of-memory-excepiton


重新运行,果然不报这个错了,改报下个错了:

Out of memory on a 3411216-byte allocation.
11-08 05:47:18.600: I/dalvikvm(30193): "main" prio=5 tid=1 RUNNABLE
11-08 05:47:18.600: I/dalvikvm(30193):   | group="main" sCount=0 dsCount=0 obj=0x410009a0 self=0x40fea898
11-08 05:47:18.600: I/dalvikvm(30193):   | sysTid=30193 nice=0 sched=0/0 cgrp=apps handle=1074406876
11-08 05:47:18.600: I/dalvikvm(30193):   | state=R schedstat=( 1464342585 920417373 10878 ) utm=104 stm=41 core=0
11-08 05:47:18.600: I/dalvikvm(30193):   at android.graphics.Bitmap.nativeCreate(Native Method)
11-08 05:47:18.600: I/dalvikvm(30193):   at android.graphics.Bitmap.createBitmap(Bitmap.java:718)
11-08 05:47:18.600: I/dalvikvm(30193):   at android.graphics.Bitmap.createBitmap(Bitmap.java:695)
11-08 05:47:18.600: I/dalvikvm(30193):   at android.graphics.Bitmap.createBitmap(Bitmap.java:662)
11-08 05:47:18.600: I/dalvikvm(30193):   at com.aphidmobile.flip.GrabIt.takeScreenshot(GrabIt.java:35)
11-08 05:47:18.600: I/dalvikvm(30193):   at com.aphidmobile.flip.ViewDualCards.loadView(ViewDualCards.java:82)
11-08 05:47:18.600: I/dalvikvm(30193):   at com.aphidmobile.flip.FlipCards.reloadTexture(FlipCards.java:144)
11-08 05:47:18.600: I/dalvikvm(30193):   at com.aphidmobile.flip.FlipRenderer.updateTexture(FlipRenderer.java:143)
11-08 05:47:18.600: I/dalvikvm(30193):   at com.aphidmobile.flip.FlipViewController.onLayout(FlipViewController.java:409)
11-08 05:47:18.605: I/dalvikvm(30193):   at android.view.View.layout(View.java:14565)
11-08 05:47:18.605: I/dalvikvm(30193):   at android.view.ViewGroup.layout(ViewGroup.java:4473)
11-08 05:47:18.605: I/dalvikvm(30193):   at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1021)
11-08 05:47:18.605: I/dalvikvm(30193):   at android.view.View.layout(View.java:14565)
11-08 05:47:18.605: I/dalvikvm(30193):   at android.view.ViewGroup.layout(ViewGroup.java:4473)
11-08 05:47:18.605: I/dalvikvm(30193):   at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1669)
11-08 05:47:18.605: I/dalvikvm(30193):   at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1527)
11-08 05:47:18.605: I/dalvikvm(30193):   at android.widget.LinearLayout.onLayout(LinearLayout.java:1440)
11-08 05:47:18.605: I/dalvikvm(30193):   at android.view.View.layout(View.java:14565)
11-08 05:47:18.605: I/dalvikvm(30193):   at android.view.ViewGroup.layout(ViewGroup.java:4473)
11-08 05:47:18.605: I/dalvikvm(30193):   at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1669)
11-08 05:47:18.605: I/dalvikvm(30193):   at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1527)
11-08 05:47:18.605: I/dalvikvm(30193):   at android.widget.LinearLayout.onLayout(LinearLayout.java:1440)
11-08 05:47:18.605: I/dalvikvm(30193):   at android.view.View.layout(View.java:14565)
11-08 05:47:18.610: I/dalvikvm(30193):   at android.view.ViewGroup.layout(ViewGroup.java:4473)
11-08 05:47:18.610: I/dalvikvm(30193):   at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
11-08 05:47:18.610: I/dalvikvm(30193):   at android.view.View.layout(View.java:14565)
11-08 05:47:18.610: I/dalvikvm(30193):   at android.view.ViewGroup.layout(ViewGroup.java:4473)
11-08 05:47:18.610: I/dalvikvm(30193):   at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1669)
11-08 05:47:18.610: I/dalvikvm(30193):   at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1527)
11-08 05:47:18.610: I/dalvikvm(30193):   at android.widget.LinearLayout.onLayout(LinearLayout.java:1440)
11-08 05:47:18.610: I/dalvikvm(30193):   at android.view.View.layout(View.java:14565)
11-08 05:47:18.610: I/dalvikvm(30193):   at android.view.ViewGroup.layout(ViewGroup.java:4473)
11-08 05:47:18.610: I/dalvikvm(30193):   at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
11-08 05:47:18.610: I/dalvikvm(30193):   at android.view.View.layout(View.java:14565)
11-08 05:47:18.610: I/dalvikvm(30193):   at android.view.ViewGroup.layout(ViewGroup.java:4473)
11-08 05:47:18.615: I/dalvikvm(30193):   at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2186)
11-08 05:47:18.615: I/dalvikvm(30193):   at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2000)
11-08 05:47:18.615: I/dalvikvm(30193):   at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1213)
11-08 05:47:18.615: I/dalvikvm(30193):   at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4994)
11-08 05:47:18.615: I/dalvikvm(30193):   at android.view.Choreographer$CallbackRecord.run(Choreographer.java:791)
11-08 05:47:18.615: I/dalvikvm(30193):   at android.view.Choreographer.doCallbacks(Choreographer.java:591)
11-08 05:47:18.615: I/dalvikvm(30193):   at android.view.Choreographer.doFrame(Choreographer.java:561)
11-08 05:47:18.615: I/dalvikvm(30193):   at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:777)
11-08 05:47:18.615: I/dalvikvm(30193):   at android.os.Handler.handleCallback(Handler.java:725)
11-08 05:47:18.615: I/dalvikvm(30193):   at android.os.Handler.dispatchMessage(Handler.java:92)
11-08 05:47:18.615: I/dalvikvm(30193):   at android.os.Looper.loop(Looper.java:137)
11-08 05:47:18.615: I/dalvikvm(30193):   at android.app.ActivityThread.main(ActivityThread.java:5306)
11-08 05:47:18.615: I/dalvikvm(30193):   at java.lang.reflect.Method.invokeNative(Native Method)
11-08 05:47:18.615: I/dalvikvm(30193):   at java.lang.reflect.Method.invoke(Method.java:511)
11-08 05:47:18.615: I/dalvikvm(30193):   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
11-08 05:47:18.615: I/dalvikvm(30193):   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
11-08 05:47:18.615: I/dalvikvm(30193):   at dalvik.system.NativeStart.main(Native Method)
11-08 05:47:18.620: D/AndroidRuntime(30193): Shutting down VM
11-08 05:47:18.620: W/dalvikvm(30193): threadid=1: thread exiting with uncaught exception (group=0x40fff930)
11-08 05:47:18.635: E/AndroidRuntime(30193): FATAL EXCEPTION: main
11-08 05:47:18.635: E/AndroidRuntime(30193): java.lang.OutOfMemoryError
11-08 05:47:18.635: E/AndroidRuntime(30193): 	at android.graphics.Bitmap.nativeCreate(Native Method)
11-08 05:47:18.635: E/AndroidRuntime(30193): 	at android.graphics.Bitmap.createBitmap(Bitmap.java:718)
11-08 05:47:18.635: E/AndroidRuntime(30193): 	at android.graphics.Bitmap.createBitmap(Bitmap.java:695)
11-08 05:47:18.635: E/AndroidRuntime(30193): 	at android.graphics.Bitmap.createBitmap(Bitmap.java:662)
11-08 05:47:18.635: E/AndroidRuntime(30193): 	at com.aphidmobile.flip.GrabIt.takeScreenshot(GrabIt.java:35)
11-08 05:47:18.635: E/AndroidRuntime(30193): 	at com.aphidmobile.flip.ViewDualCards.loadView(ViewDualCards.java:82)
11-08 05:47:18.635: E/AndroidRuntime(30193): 	at com.aphidmobile.flip.FlipCards.reloadTexture(FlipCards.java:144)
11-08 05:47:18.635: E/AndroidRuntime(30193): 	at com.aphidmobile.flip.FlipRenderer.updateTexture(FlipRenderer.java:143)
11-08 05:47:18.635: E/AndroidRuntime(30193): 	at com.aphidmobile.flip.FlipViewController.onLayout(FlipViewController.java:409)
11-08 05:47:18.635: E/AndroidRuntime(30193): 	at android.view.View.layout(View.java:14565)
11-08 05:47:18.635: E/AndroidRuntime(30193): 	at android.view.ViewGroup.layout(ViewGroup.java:4473)
11-08 05:47:18.635: E/AndroidRuntime(30193): 	at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1021)
11-08 05:47:18.635: E/AndroidRuntime(30193): 	at android.view.View.layout(View.java:14565)
11-08 05:47:18.635: E/AndroidRuntime(30193): 	at android.view.ViewGroup.layout(ViewGroup.java:4473)
11-08 05:47:18.635: E/AndroidRuntime(30193): 	at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1669)
11-08 05:47:18.635: E/AndroidRuntime(30193): 	at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1527)
11-08 05:47:18.635: E/AndroidRuntime(30193): 	at android.widget.LinearLayout.onLayout(LinearLayout.java:1440)
11-08 05:47:18.635: E/AndroidRuntime(30193): 	at android.view.View.layout(View.java:14565)
11-08 05:47:18.635: E/AndroidRuntime(30193): 	at android.view.ViewGroup.layout(ViewGroup.java:4473)
11-08 05:47:18.635: E/AndroidRuntime(30193): 	at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1669)
11-08 05:47:18.635: E/AndroidRuntime(30193): 	at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1527)
11-08 05:47:18.635: E/AndroidRuntime(30193): 	at android.widget.LinearLayout.onLayout(LinearLayout.java:1440)
11-08 05:47:18.635: E/AndroidRuntime(30193): 	at android.view.View.layout(View.java:14565)
11-08 05:47:18.635: E/AndroidRuntime(30193): 	at android.view.ViewGroup.layout(ViewGroup.java:4473)
11-08 05:47:18.635: E/AndroidRuntime(30193): 	at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
11-08 05:47:18.635: E/AndroidRuntime(30193): 	at android.view.View.layout(View.java:14565)
11-08 05:47:18.635: E/AndroidRuntime(30193): 	at android.view.ViewGroup.layout(ViewGroup.java:4473)
11-08 05:47:18.635: E/AndroidRuntime(30193): 	at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1669)
11-08 05:47:18.635: E/AndroidRuntime(30193): 	at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1527)
11-08 05:47:18.635: E/AndroidRuntime(30193): 	at android.widget.LinearLayout.onLayout(LinearLayout.java:1440)
11-08 05:47:18.635: E/AndroidRuntime(30193): 	at android.view.View.layout(View.java:14565)
11-08 05:47:18.635: E/AndroidRuntime(30193): 	at android.view.ViewGroup.layout(ViewGroup.java:4473)
11-08 05:47:18.635: E/AndroidRuntime(30193): 	at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
11-08 05:47:18.635: E/AndroidRuntime(30193): 	at android.view.View.layout(View.java:14565)
11-08 05:47:18.635: E/AndroidRuntime(30193): 	at android.view.ViewGroup.layout(ViewGroup.java:4473)
11-08 05:47:18.635: E/AndroidRuntime(30193): 	at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2186)
11-08 05:47:18.635: E/AndroidRuntime(30193): 	at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2000)
11-08 05:47:18.635: E/AndroidRuntime(30193): 	at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1213)
11-08 05:47:18.635: E/AndroidRuntime(30193): 	at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4994)
11-08 05:47:18.635: E/AndroidRuntime(30193): 	at android.view.Choreographer$CallbackRecord.run(Choreographer.java:791)
11-08 05:47:18.635: E/AndroidRuntime(30193): 	at android.view.Choreographer.doCallbacks(Choreographer.java:591)
11-08 05:47:18.635: E/AndroidRuntime(30193): 	at android.view.Choreographer.doFrame(Choreographer.java:561)
11-08 05:47:18.635: E/AndroidRuntime(30193): 	at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:777)
11-08 05:47:18.635: E/AndroidRuntime(30193): 	at android.os.Handler.handleCallback(Handler.java:725)
11-08 05:47:18.635: E/AndroidRuntime(30193): 	at android.os.Handler.dispatchMessage(Handler.java:92)
11-08 05:47:18.635: E/AndroidRuntime(30193): 	at android.os.Looper.loop(Looper.java:137)
11-08 05:47:18.635: E/AndroidRuntime(30193): 	at android.app.ActivityThread.main(ActivityThread.java:5306)
11-08 05:47:18.635: E/AndroidRuntime(30193): 	at java.lang.reflect.Method.invokeNative(Native Method)
11-08 05:47:18.635: E/AndroidRuntime(30193): 	at java.lang.reflect.Method.invoke(Method.java:511)
11-08 05:47:18.635: E/AndroidRuntime(30193): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
11-08 05:47:18.635: E/AndroidRuntime(30193): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
11-08 05:47:18.635: E/AndroidRuntime(30193): 	at dalvik.system.NativeStart.main(Native Method)


查了一下 GrabIt.takeScreenshot(GrabIt.java:35)代码

发现是第三方库翻页效果创建bitmap时报错,花擦,这怎么还能报错,查查吧。

解决方案:



Couple of things....

Android has really serious problems with bitmaps. They're allocated in non-garbage collected memory.Which is fine. They do get garbage-collected when the owning Bitmap gets collected. What they don't do is relocate while the heap is being compacted. This can cause premature out-of-memory errors due to heap fragmentation. The solution: call Bitmap.recycle as soon as you're done with a bitmap. This frees the non-gc memory, and reduces fragmentation problems.

You can also reduce memory pressure by creating an empty bitmap, and then copying pixels in row by row from a single small buffer. Java gc doesn't particularly like huge arrays either (although large arrays can be relocated during a gc). The performance hit is tiny, and negligible compared to the performance hit from a premature garbage collect. Doing that will reduce your memory usage 49.99 percent.

 
You can use  android:largeHeap="true"  to request a larger heap size mention this in manifest file to use large heap.

内容转自:http://stackoverflow.com/questions/4106552/createbitmap-causes-an-outofmemory-error


发现aphid中也一劲儿调用recyclebitmap这个函数了,也不好使,就把heap值调大了,果然不报错了。再一次印证了android比ios残了太多。。。。


猜你喜欢

转载自blog.csdn.net/jbb0403/article/details/53066798