此片段中的“GC_BEFORE_OOM”是什么?
What is `GC_BEFORE_OOM` in this Fragment?
这里的GC_BEFORE_OOM
是什么?我认为这与 Java 中的垃圾收集有关,但我不知道这里发生了什么。
09-08 15:42:18.568 29597-29597/jp.co.example D/dalvikvm﹕ GC_BEFORE_OOM freed 353K, 22% free 57872K/73443K, paused 35ms, total 36ms
09-08 15:42:18.568 29597-29597/jp.co.example E/dalvikvm-heap﹕ Out of memory on a 640016-byte allocation.
09-08 15:42:18.568 29597-29597/jp.co.example I/dalvikvm﹕ "main" prio=5 tid=1 RUNNABLE
09-08 15:42:18.569 29597-29597/jp.co.example I/dalvikvm﹕ | group="main" sCount=0 dsCount=0 obj=0x40aa3460 self=0xc598e0
09-08 15:42:18.569 29597-29597/jp.co.example I/dalvikvm﹕ | sysTid=29597 nice=0 sched=0/0 cgrp=default handle=1074087304
09-08 15:42:18.569 29597-29597/jp.co.example I/dalvikvm﹕ | schedstat=( 6092879000 2120586000 7353 ) utm=517 stm=92 core=0
09-08 15:42:18.569 29597-29597/jp.co.example I/dalvikvm﹕ at android.graphics.Bitmap.nativeCreate(Native Method)
09-08 15:42:18.570 29597-29597/jp.co.example I/dalvikvm﹕ at android.graphics.Bitmap.createBitmap(Bitmap.java:605)
09-08 15:42:18.570 29597-29597/jp.co.example I/dalvikvm﹕ at android.graphics.Bitmap.createBitmap(Bitmap.java:551)
09-08 15:42:18.570 29597-29597/jp.co.example I/dalvikvm﹕ at android.graphics.Bitmap.createScaledBitmap(Bitmap.java:437)
09-08 15:42:18.570 29597-29597/jp.co.example I/dalvikvm﹕ at android.graphics.BitmapFactory.finishDecode(BitmapFactory.java:545)
09-08 15:42:18.570 29597-29597/jp.co.example I/dalvikvm﹕ at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:520)
09-08 15:42:18.571 29597-29597/jp.co.example I/dalvikvm﹕ at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:363)
09-08 15:42:18.571 29597-29597/jp.co.example I/dalvikvm﹕ at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:773)
我研究了什么
在这个片段中,setBackgroundResource()
被调用了几次,因此可以说很明显这里加载图片会导致OutOfMemoryError。好像还有其他人遇到同样的问题。
- Android setBackgroundResource cause out of memory excepiton
- Android setBackgroundResource release memory?
- Out of memory exception in textview.setbackground resource in android
因此,我已阅读post官方Android开发者:
我已经尝试过这些,但是 post 没有提到垃圾收集或 Android 中的 GC_BEFORE_OOM
。
These methods attempt to allocate memory for the constructed bitmap and therefore can easily result in an OutOfMemory exception.
所以,我的问题是...
- 上面的
GC_BEFORE_OOM
是什么?
- 背后发生了什么?
有人愿意帮忙吗?
OutOfMemoryError
之前的垃圾回收。
在抛出 OOM
之前,VM 将尝试垃圾收集并保留 运行。如果集合没有释放足够的内存,你会得到一个 OutOfMemoryError
(上面发生的事情)。
这里的GC_BEFORE_OOM
是什么?我认为这与 Java 中的垃圾收集有关,但我不知道这里发生了什么。
09-08 15:42:18.568 29597-29597/jp.co.example D/dalvikvm﹕ GC_BEFORE_OOM freed 353K, 22% free 57872K/73443K, paused 35ms, total 36ms
09-08 15:42:18.568 29597-29597/jp.co.example E/dalvikvm-heap﹕ Out of memory on a 640016-byte allocation.
09-08 15:42:18.568 29597-29597/jp.co.example I/dalvikvm﹕ "main" prio=5 tid=1 RUNNABLE
09-08 15:42:18.569 29597-29597/jp.co.example I/dalvikvm﹕ | group="main" sCount=0 dsCount=0 obj=0x40aa3460 self=0xc598e0
09-08 15:42:18.569 29597-29597/jp.co.example I/dalvikvm﹕ | sysTid=29597 nice=0 sched=0/0 cgrp=default handle=1074087304
09-08 15:42:18.569 29597-29597/jp.co.example I/dalvikvm﹕ | schedstat=( 6092879000 2120586000 7353 ) utm=517 stm=92 core=0
09-08 15:42:18.569 29597-29597/jp.co.example I/dalvikvm﹕ at android.graphics.Bitmap.nativeCreate(Native Method)
09-08 15:42:18.570 29597-29597/jp.co.example I/dalvikvm﹕ at android.graphics.Bitmap.createBitmap(Bitmap.java:605)
09-08 15:42:18.570 29597-29597/jp.co.example I/dalvikvm﹕ at android.graphics.Bitmap.createBitmap(Bitmap.java:551)
09-08 15:42:18.570 29597-29597/jp.co.example I/dalvikvm﹕ at android.graphics.Bitmap.createScaledBitmap(Bitmap.java:437)
09-08 15:42:18.570 29597-29597/jp.co.example I/dalvikvm﹕ at android.graphics.BitmapFactory.finishDecode(BitmapFactory.java:545)
09-08 15:42:18.570 29597-29597/jp.co.example I/dalvikvm﹕ at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:520)
09-08 15:42:18.571 29597-29597/jp.co.example I/dalvikvm﹕ at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:363)
09-08 15:42:18.571 29597-29597/jp.co.example I/dalvikvm﹕ at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:773)
我研究了什么
在这个片段中,setBackgroundResource()
被调用了几次,因此可以说很明显这里加载图片会导致OutOfMemoryError。好像还有其他人遇到同样的问题。
- Android setBackgroundResource cause out of memory excepiton
- Android setBackgroundResource release memory?
- Out of memory exception in textview.setbackground resource in android
因此,我已阅读post官方Android开发者:
我已经尝试过这些,但是 post 没有提到垃圾收集或 Android 中的 GC_BEFORE_OOM
。
These methods attempt to allocate memory for the constructed bitmap and therefore can easily result in an OutOfMemory exception.
所以,我的问题是...
- 上面的
GC_BEFORE_OOM
是什么? - 背后发生了什么?
有人愿意帮忙吗?
OutOfMemoryError
之前的垃圾回收。
在抛出 OOM
之前,VM 将尝试垃圾收集并保留 运行。如果集合没有释放足够的内存,你会得到一个 OutOfMemoryError
(上面发生的事情)。