Fatal Exception: java.lang.OutOfMemoryError

huangapple go评论72阅读模式
英文:

Fatal Exception: java.lang.OutOfMemoryError

问题

我遇到了这个错误:
严重异常:java.lang.OutOfMemoryError
无法分配 8640012 字节的内存,剩余 6781976 字节可用,直到 OOM 时还有 6MB
com.olgazelenko.esofer.AlegeTestulB.onCreate

我尝试通过添加 android:largeHeap="true" 来修复它,但仍然遇到了错误。

以下是堆栈跟踪:

严重异常:java.lang.OutOfMemoryError:无法分配 8640012 字节的内存,剩余 6781976 字节可用,直到 OOM 时还有 6MB
at dalvik.system.VMRuntime.newNonMovableArray(VMRuntime.java)
at android.graphics.BitmapFactory.nativeDecodeAsset(BitmapFactory.java)
at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:655)
at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:483)
at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:1157)
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:972)
at android.content.res.TypedArray.getDrawable(TypedArray.java:935)
at android.view.View.(View.java:4232)
at android.widget.TextView.(TextView.java:733)
at android.widget.Button.(Button.java:109)
at android.widget.Button.(Button.java:105)
at androidx.appcompat.widget.AppCompatButton.(AppCompatButton.java:71)
at androidx.appcompat.widget.AppCompatButton.(AppCompatButton.java:67)
at androidx.appcompat.app.AppCompatViewInflater.createButton(AppCompatViewInflater.java:187)
at androidx.appcompat.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:110)
at androidx.appcompat.app.AppCompatDelegateImpl.createView(AppCompatDelegateImpl.java:1266)
at androidx.appcompat.app.AppCompatDelegateImpl.onCreateView(AppCompatDelegateImpl.java:1316)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:769)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:727)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:858)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:861)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:861)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:861)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
at android.view.LayoutInflater.inflate(LayoutInflater.java:518)
at android.view.LayoutInflater.inflate(LayoutInflater.java:426)
at android.view.LayoutInflater.inflate(LayoutInflater.java:377)
at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:469)
at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
at com.olgazelenko.esofer.AlegeTestulB.onCreate(AlegeTestulB.java:52)
at android.app.Activity.performCreate(Activity.java:6666)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2677)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2789)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1527)
at android.os.Handler.dispatchMessage(Handler.java:110)
at android.os.Looper.loop(Looper.java:203)
at android.app.ActivityThread.main(ActivityThread.java:6251)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1063)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:924)

有人知道如何修复这个问题吗?提前感谢。

英文:

i have this error:
Fatal Exception: java.lang.OutOfMemoryError
Failed to allocate a 8640012 byte allocation with 6781976 free bytes and 6MB until OOM
com.olgazelenko.esofer.AlegeTestulB.onCreate

I tried to fix it by adding: android:largeHeap="true" but i still got the error.

there is the stacktrace:

Fatal Exception: java.lang.OutOfMemoryError: Failed to allocate a 8640012 byte allocation with 6781976 free bytes and 6MB until OOM
   at dalvik.system.VMRuntime.newNonMovableArray(VMRuntime.java)
   at android.graphics.BitmapFactory.nativeDecodeAsset(BitmapFactory.java)
   at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:655)
   at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:483)
   at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:1157)
   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:972)
   at android.content.res.TypedArray.getDrawable(TypedArray.java:935)
   at android.view.View.<init>(View.java:4232)
   at android.widget.TextView.<init>(TextView.java:733)
   at android.widget.Button.<init>(Button.java:109)
   at android.widget.Button.<init>(Button.java:105)
   at androidx.appcompat.widget.AppCompatButton.<init>(AppCompatButton.java:71)
   at androidx.appcompat.widget.AppCompatButton.<init>(AppCompatButton.java:67)
   at androidx.appcompat.app.AppCompatViewInflater.createButton(AppCompatViewInflater.java:187)
   at androidx.appcompat.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:110)
   at androidx.appcompat.app.AppCompatDelegateImpl.createView(AppCompatDelegateImpl.java:1266)
   at androidx.appcompat.app.AppCompatDelegateImpl.onCreateView(AppCompatDelegateImpl.java:1316)
   at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:769)
   at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:727)
   at android.view.LayoutInflater.rInflate(LayoutInflater.java:858)
   at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
   at android.view.LayoutInflater.rInflate(LayoutInflater.java:861)
   at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
   at android.view.LayoutInflater.rInflate(LayoutInflater.java:861)
   at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
   at android.view.LayoutInflater.rInflate(LayoutInflater.java:861)
   at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
   at android.view.LayoutInflater.inflate(LayoutInflater.java:518)
   at android.view.LayoutInflater.inflate(LayoutInflater.java:426)
   at android.view.LayoutInflater.inflate(LayoutInflater.java:377)
   at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:469)
   at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
   at com.olgazelenko.esofer.AlegeTestulB.onCreate(AlegeTestulB.java:52)
   at android.app.Activity.performCreate(Activity.java:6666)
   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2677)
   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2789)
   at android.app.ActivityThread.-wrap12(ActivityThread.java)
   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1527)
   at android.os.Handler.dispatchMessage(Handler.java:110)
   at android.os.Looper.loop(Looper.java:203)
   at android.app.ActivityThread.main(ActivityThread.java:6251)
   at java.lang.reflect.Method.invoke(Method.java)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1063)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:924)

does someone know how that can be fixed? thanks in advance

答案1

得分: 0

这个回答是基于您的 XML 中的布局:https://pastebin.com/5AUKpCnn

<ScrollView
        android:id="@+id/ScrollView01"
    ...
    <Button...
    <Button...
    <Button...
    ...
</ScrollView>

看起来您正在尝试使用 ScrollView 和许多 Button 来创建一个列表。像这样创建一个列表会一次性加载所有图像。

您应该查看一下 Android 的 ListView 或 RecyclerView,用于创建可点击图像列表。这两个组件可以通过处理列表项来为您简化事情,以便它们不会同时加载。

英文:

This answer is based on the layout found in your XML: https://pastebin.com/5AUKpCnn

 &lt;ScrollView
        android:id=&quot;@+id/ScrollView01&quot;
    ...
    &lt;Button...
    &lt;Button...
    &lt;Button...
    ...
 &lt;/ScrollView&gt;

It seems that you're trying to create a List by using a ScrollView and a lot of Buttons.
Creating a list like that loads all your images at once.

You should check out Android's ListView or RecyclerView for creating a list of clickable images. Those two can make things easier for you with their handling of List items so that they're not loaded all at the same time.

huangapple
  • 本文由 发表于 2020年10月1日 20:40:14
  • 转载请务必保留本文链接:https://go.coder-hub.com/64155606.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定