安卓的OutOfMemoryError:?OutOfMemoryError

2023-09-13 00:27:49 作者:初吻给了奶嘴

我sporatically得到的OutOfMemoryError:(堆大小= 49187KB,分配= 41957KB)在我的应用程序之一。我能做些什么来诊断呢?

  10月1日至九日:32:02.079:E / dalvikvm(8077):内存:堆大小= 49187KB,分配= 41957KB,限= 49152KB
  10月1号至9日:32:02.079:E / dalvikvm(8077):额外的信息:足迹= 48611KB,允许的排放量= 49187KB,裁剪= 7852KB
  10月1号至9日:32:02.079:D / Skia的(8077):---德codeR->德code返回false
  10月1号至9日:32:02.079:D / AndroidRuntime(8077):关闭虚拟机
  10月1号至9日:32:02.079:W / dalvikvm(8077):主题ID = 1:螺纹退出与未捕获的异常(组= 0x40a97228)
  10月1号至9日:32:02.079:E / AndroidRuntime(8077):致命异常:主要
  10月1号至9日:32:02.079:E / AndroidRuntime(8077):java.lang.OutOfMemoryError:(堆大小= 49187KB,分配= 41957KB)
  10月1号至9日:32:02.079:E / AndroidRuntime(8077):在android.graphics.BitmapFactory.nativeDe $ C $检测板(本机方法)
  10月1号至9日:32:02.079:E / AndroidRuntime(8077):在android.graphics.BitmapFactory.de codeResourceStream(BitmapFactory.java:486)
  10月1号至9日:32:02.079:E / AndroidRuntime(8077):在android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:773)
  10月1号至9日:32:02.079:E / AndroidRuntime(8077):在android.content.res.Resources.loadDrawable(Resources.java:2044)
  10月1号至9日:32:02.079:E / AndroidRuntime(8077):在android.content.res.Resources.getDrawable(Resources.java:675)
  10月1号至9日:32:02.079:E / AndroidRuntime(8077):在android.view.View.setBackgroundResource(View.java:11776)
  10月1号至9日:32:02.079:E / AndroidRuntime(8077):在com.blsk.bigtoss.ImageLoader.DisplayImage(ImageLoader.java:81)
  10月1号至9日:32:02.079:E / AndroidRuntime(8077):在com.blsk.bigtoss.MatchActivity $ MatchAsyncTask.onPostExecute(MatchActivity.java:1768)
  10月1号至9日:32:02.079:E / AndroidRuntime(8077):在android.os.AsyncTask.finish(AsyncTask.java:602)
  10月1号至9日:32:02.079:E / AndroidRuntime(8077):在android.os.AsyncTask.access $ 600(AsyncTask.java:156)
  10月1号至9日:32:02.079:E / AndroidRuntime(8077):在android.os.AsyncTask $ InternalHandler.handleMessage(AsyncTask.java:615)
  10月1号至9日:32:02.079:E / AndroidRuntime(8077):在android.os.Handler.dispatchMessage(Handler.java:99)
  10月1号至9日:32:02.079:E / AndroidRuntime(8077):在android.os.Looper.loop(Looper.java:156)
  10月1号至9日:32:02.079:E / AndroidRuntime(8077):在android.app.ActivityThread.main(ActivityThread.java:4987)
  10月1号至9日:32:02.079:E / AndroidRuntime(8077):在java.lang.reflect.Method.invokeNative(本机方法)
  10月1号至9日:32:02.079:E / AndroidRuntime(8077):在java.lang.reflect.Method.invoke(Method.java:511)
  10月1号至9日:32:02.079:E / AndroidRuntime(8077):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:784)
  10月1号至9日:32:02.079:E / AndroidRuntime(8077):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
  10月1号至9日:32:02.079:E / AndroidRuntime(8077):在dalvik.system.NativeStart.main(本机方法)
  10月1号至9日:32:02.099:E / EmbeddedLogger(1612):应用程序崩溃!工艺:com.blsk.bigtoss
  10月1号至9日:32:02.099:E / EmbeddedLogger(1612):应用程序崩溃!包装:com.blsk.bigtoss V6(1.2)
  10月1号至9日:32:02.129:E / EmbeddedLogger(1612):应用标签:板球
 

这是在那里发生的事情就行了。

 的LinearLayout resultMatchHeaderContainer =新的LinearLayout(活动);

如果(!resultImagePath.equals()){
 imageLoader.DisplayImage(resultImagePath,resultMatchHeaderContainer,-1,modifiedHeight,R.drawable.matches_placeholder_result2x);
} 其他 {
    尝试{reultMatchHeaderContainer.setBackgroundResource(R.drawable.matches_placeholder_result2x);
 }赶上(OutOfMemoryError异常E){
     e.printStackTrace();
 }
}
 

解决方案

也许这可以帮助您?

补充清单

安卓> V3

 <应用
    ....
       机器人:largeHeap =真正的>
 
查找并修复Android中的内存泄露 OutOfMemoryError

I am sporatically getting OutOfMemoryError: (Heap Size=49187KB, Allocated=41957KB)in one of my apps. What can I do to diagnose this?

  01-09 10:32:02.079: E/dalvikvm(8077): Out of memory: Heap Size=49187KB, Allocated=41957KB, Limit=49152KB
  01-09 10:32:02.079: E/dalvikvm(8077): Extra info: Footprint=48611KB, Allowed Footprint=49187KB, Trimmed=7852KB
  01-09 10:32:02.079: D/skia(8077): --- decoder->decode returned false
  01-09 10:32:02.079: D/AndroidRuntime(8077): Shutting down VM
  01-09 10:32:02.079: W/dalvikvm(8077): threadid=1: thread exiting with uncaught exception (group=0x40a97228)
  01-09 10:32:02.079: E/AndroidRuntime(8077): FATAL EXCEPTION: main
  01-09 10:32:02.079: E/AndroidRuntime(8077): java.lang.OutOfMemoryError: (Heap Size=49187KB, Allocated=41957KB)
  01-09 10:32:02.079: E/AndroidRuntime(8077):   at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
  01-09 10:32:02.079: E/AndroidRuntime(8077):   at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:486)
  01-09 10:32:02.079: E/AndroidRuntime(8077):   at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:773)
  01-09 10:32:02.079: E/AndroidRuntime(8077):   at android.content.res.Resources.loadDrawable(Resources.java:2044)
  01-09 10:32:02.079: E/AndroidRuntime(8077):   at android.content.res.Resources.getDrawable(Resources.java:675)
  01-09 10:32:02.079: E/AndroidRuntime(8077):   at android.view.View.setBackgroundResource(View.java:11776)
  01-09 10:32:02.079: E/AndroidRuntime(8077):   at com.blsk.bigtoss.ImageLoader.DisplayImage(ImageLoader.java:81)
  01-09 10:32:02.079: E/AndroidRuntime(8077):   at com.blsk.bigtoss.MatchActivity$MatchAsyncTask.onPostExecute(MatchActivity.java:1768)
  01-09 10:32:02.079: E/AndroidRuntime(8077):   at android.os.AsyncTask.finish(AsyncTask.java:602)
  01-09 10:32:02.079: E/AndroidRuntime(8077):   at android.os.AsyncTask.access$600(AsyncTask.java:156)
  01-09 10:32:02.079: E/AndroidRuntime(8077):   at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:615)
  01-09 10:32:02.079: E/AndroidRuntime(8077):   at android.os.Handler.dispatchMessage(Handler.java:99)
  01-09 10:32:02.079: E/AndroidRuntime(8077):   at android.os.Looper.loop(Looper.java:156)
  01-09 10:32:02.079: E/AndroidRuntime(8077):   at android.app.ActivityThread.main(ActivityThread.java:4987)
  01-09 10:32:02.079: E/AndroidRuntime(8077):   at java.lang.reflect.Method.invokeNative(Native Method)
  01-09 10:32:02.079: E/AndroidRuntime(8077):   at java.lang.reflect.Method.invoke(Method.java:511)
  01-09 10:32:02.079: E/AndroidRuntime(8077):   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
  01-09 10:32:02.079: E/AndroidRuntime(8077):   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
  01-09 10:32:02.079: E/AndroidRuntime(8077):   at dalvik.system.NativeStart.main(Native Method)
  01-09 10:32:02.099: E/EmbeddedLogger(1612): App crashed! Process: com.blsk.bigtoss
  01-09 10:32:02.099: E/EmbeddedLogger(1612): App crashed! Package: com.blsk.bigtoss v6 (1.2)
  01-09 10:32:02.129: E/EmbeddedLogger(1612): Application Label: Cricket

This is the line where it is happening.

LinearLayout resultMatchHeaderContainer = new LinearLayout(activity); 

if (!resultImagePath.equals("")) {   
 imageLoader.DisplayImage(resultImagePath,resultMatchHeaderContainer, -1,modifiedHeight,    R.drawable.matches_placeholder_result2x);
} else {
    try {       reultMatchHeaderContainer.setBackgroundResource(R.drawable.matches_placeholder_result2x); 
 } catch (OutOfMemoryError e) {         
     e.printStackTrace();
 }
}

解决方案

maybe this help you ?

add manifest

android > v3

<application
    ....
       android:largeHeap="true">