最新消息:关注【太平洋学习网】微信公众号,可以获取全套资料,【全套Java基础27天】【JavaEE就业视频4个月】【Android就业视频4个月】

java.lang.OutOfMemoryError: Failed to allocate a allocation

Android 太平洋学习网 浏览 评论

“java.lang.OutOfMemoryError: Failed to allocate a allocation until OOM”内存溢出错误是在Android app运行的时候出现的,这可能是因为你app RAM中缓存太多文件或反复实例化相同的位图和视频造成的内存不足现象,可以使用Picasso / Imageloader / Fresco / Glide这几个技术来解决资源文件的内存问题。

FATAL EXCEPTION: main Process: com.example.we.appname, PID: 9353

java.lang.OutOfMemoryError: Failed to allocate a 1660396 byte allocation with 1243880 free 
bytes and 1214KB until OOM at dalvik.system.VMRuntime.newNonMovableArray(Native Method) at 
android.graphics.BitmapFactory.nativeDecodeAsset(Native Method) at 
android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:620) at 
android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:455) at 
android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:1155) at 
android.content.res.ResourcesImpl.loadDrawableForCookie(ResourcesImpl.java:720) at 
android.content.res.ResourcesImpl.loadDrawable(ResourcesImpl.java:571) at 
android.content.res.Resources.loadDrawable(Resources.java:858) at 
android.content.res.TypedArray.getDrawable(TypedArray.java:928) at 
android.graphics.drawable.AnimationDrawable.inflateChildElements(AnimationDrawable.java:327) at 
android.graphics.drawable.AnimationDrawable.inflate(AnimationDrawable.java:297) at 
android.graphics.drawable.DrawableInflater.inflateFromXml(DrawableInflater.java:130) at 
android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:1227) at 
android.graphics.drawable.Drawable.createFromXml(Drawable.java:1200) at 
android.content.res.ResourcesImpl.loadDrawableForCookie(ResourcesImpl.java:715) at 
android.content.res.ResourcesImpl.loadDrawable(ResourcesImpl.java:571) at 
android.content.res.Resources.getDrawable(Resources.java:771) at 
android.content.Context.getDrawable(Context.java:525) at 
android.view.View.setBackgroundResource(View.java:18228) at 
com.example.kq.meettheshps.Score_Card.onCreate(Score_Card.java:58) at 
android.app.Activity.performCreate(Activity.java:6679) at 
android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118) at 
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2618) at 
android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726) at 
android.app.ActivityThread.-wrap12(ActivityThread.java) at 
android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477) at 
android.os.Handler.dispatchMessage(Handler.java:102) at 
android.os.Looper.loop(Looper.java:154) at 
android.app.ActivityThread.main(ActivityThread.java:6119) at 
java.lang.reflect.Method.invoke(Native Method) at 
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)

如何解决“java.lang.OutOfMemoryError: Failed to allocate a allocation until OOM”错误呢?

我们可以在androidmenifest.xml文件中更改application配置,将hardwareAccelerated设置为false,largeHeap设置为true,代码如下:

<application
     android:allowBackup="true"
     android:hardwareAccelerated="false"
     android:icon="@mipmap/ic_launcher"
     android:label="@string/app_name"
     android:largeHeap="true"
     android:supportsRtl="true"
     android:theme="@style/AppTheme">

android:hardwareAccelerated = "true"的时候会牺牲内存来加快图片的加载速度。

android:largeHeap = "false"会限制app应用申请的内存大小。

来源网站:太平洋学习网,转载请注明出处:http://www.tpyyes.com/a/android/2018/0419/544.html

    与本文相关的文章

    发表我的评论
    取消评论

    表情

    您的回复是我们的动力!

    • 昵称 (必填)

    网友最新评论