在 Codename one 应用程序中为 videoPlayer 渲染位图时出现 OOM
Getting an OOM when rendering Bitmap for videoPlayer in Codename one app
在显示视频或图像的表单上调用 show() 后,我在 codenameOne Android 应用程序的日志中看到了这一点:
07-01 12:43:08.790 3369-3406/? E/art: Throwing OutOfMemoryError "Failed to allocate a 4631116 byte allocation with 4380676 free bytes and 4MB until OOM"
07-01 12:43:08.800 3369-3406/? W/System.err: java.lang.OutOfMemoryError: Failed to allocate a 4631116 byte allocation with 4380676 free bytes and 4MB until OOM
07-01 12:43:08.800 3369-3406/? W/System.err: at dalvik.system.VMRuntime.newNonMovableArray(Native Method)
07-01 12:43:08.800 3369-3406/? W/System.err: at android.graphics.Bitmap.nativeCreate(Native Method)
07-01 12:43:08.800 3369-3406/? W/System.err: at android.graphics.Bitmap.createBitmap(Bitmap.java:939)
07-01 12:43:08.800 3369-3406/? W/System.err: at android.graphics.Bitmap.createBitmap(Bitmap.java:912)
07-01 12:43:08.800 3369-3406/? W/System.err: at android.graphics.Bitmap.createBitmap(Bitmap.java:879)
07-01 12:43:08.800 3369-3406/? W/System.err: at com.codename1.impl.android.AndroidNativeUtil.renderViewOnBitmap(AndroidNativeUtil.java:163)
07-01 12:43:08.800 3369-3406/? W/System.err: at com.codename1.impl.android.f$b.m_(AndroidImplementation.java:2652)
07-01 12:43:08.800 3369-3406/? W/System.err: at com.codename1.p.y.B(PeerComponent.java:64)
07-01 12:43:08.800 3369-3406/? W/System.err: at com.codename1.p.y.a(PeerComponent.java:211)
07-01 12:43:08.800 3369-3406/? W/System.err: at com.codename1.p.h.b(Component.java:1323)
07-01 12:43:08.800 3369-3406/? W/System.err: at com.codename1.p.h.d(Component.java:1297)
07-01 12:43:08.800 3369-3406/? W/System.err: at com.codename1.p.h.a(Component.java:1272)
07-01 12:43:08.800 3369-3406/? W/System.err: at com.codename1.p.i.a(Container.java:1323)
07-01 12:43:08.800 3369-3406/? W/System.err: at com.codename1.p.h.b(Component.java:1323)
07-01 12:43:08.800 3369-3406/? W/System.err: at com.codename1.p.h.d(Component.java:1297)
07-01 12:43:08.800 3369-3406/? W/System.err: at com.codename1.p.h.a(Component.java:1272)
07-01 12:43:08.800 3369-3406/? W/System.err: at com.codename1.p.i.a(Container.java:1323)
似乎只在图片很大的时候出现,而且每次都是视频。
视频是 peer component 这意味着为了正确实现过渡,我们尝试将其转换为图像并再次转换回来。由于某种原因,这里失败了。
我们正在研究对等组件的不同方法,this issue 对此进行了部分解释。它应该会极大地改善视频、html 等内容,但可能会有点挑战。
现在我建议禁用转换以尝试解决此异常。
在显示视频或图像的表单上调用 show() 后,我在 codenameOne Android 应用程序的日志中看到了这一点:
07-01 12:43:08.790 3369-3406/? E/art: Throwing OutOfMemoryError "Failed to allocate a 4631116 byte allocation with 4380676 free bytes and 4MB until OOM" 07-01 12:43:08.800 3369-3406/? W/System.err: java.lang.OutOfMemoryError: Failed to allocate a 4631116 byte allocation with 4380676 free bytes and 4MB until OOM 07-01 12:43:08.800 3369-3406/? W/System.err: at dalvik.system.VMRuntime.newNonMovableArray(Native Method) 07-01 12:43:08.800 3369-3406/? W/System.err: at android.graphics.Bitmap.nativeCreate(Native Method) 07-01 12:43:08.800 3369-3406/? W/System.err: at android.graphics.Bitmap.createBitmap(Bitmap.java:939) 07-01 12:43:08.800 3369-3406/? W/System.err: at android.graphics.Bitmap.createBitmap(Bitmap.java:912) 07-01 12:43:08.800 3369-3406/? W/System.err: at android.graphics.Bitmap.createBitmap(Bitmap.java:879) 07-01 12:43:08.800 3369-3406/? W/System.err: at com.codename1.impl.android.AndroidNativeUtil.renderViewOnBitmap(AndroidNativeUtil.java:163) 07-01 12:43:08.800 3369-3406/? W/System.err: at com.codename1.impl.android.f$b.m_(AndroidImplementation.java:2652) 07-01 12:43:08.800 3369-3406/? W/System.err: at com.codename1.p.y.B(PeerComponent.java:64) 07-01 12:43:08.800 3369-3406/? W/System.err: at com.codename1.p.y.a(PeerComponent.java:211) 07-01 12:43:08.800 3369-3406/? W/System.err: at com.codename1.p.h.b(Component.java:1323) 07-01 12:43:08.800 3369-3406/? W/System.err: at com.codename1.p.h.d(Component.java:1297) 07-01 12:43:08.800 3369-3406/? W/System.err: at com.codename1.p.h.a(Component.java:1272) 07-01 12:43:08.800 3369-3406/? W/System.err: at com.codename1.p.i.a(Container.java:1323) 07-01 12:43:08.800 3369-3406/? W/System.err: at com.codename1.p.h.b(Component.java:1323) 07-01 12:43:08.800 3369-3406/? W/System.err: at com.codename1.p.h.d(Component.java:1297) 07-01 12:43:08.800 3369-3406/? W/System.err: at com.codename1.p.h.a(Component.java:1272) 07-01 12:43:08.800 3369-3406/? W/System.err: at com.codename1.p.i.a(Container.java:1323)
似乎只在图片很大的时候出现,而且每次都是视频。
视频是 peer component 这意味着为了正确实现过渡,我们尝试将其转换为图像并再次转换回来。由于某种原因,这里失败了。
我们正在研究对等组件的不同方法,this issue 对此进行了部分解释。它应该会极大地改善视频、html 等内容,但可能会有点挑战。
现在我建议禁用转换以尝试解决此异常。