Fatal Exception: java.lang.OutOfMemoryError

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

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:

  1. Fatal Exception: java.lang.OutOfMemoryError: Failed to allocate a 8640012 byte allocation with 6781976 free bytes and 6MB until OOM
  2. at dalvik.system.VMRuntime.newNonMovableArray(VMRuntime.java)
  3. at android.graphics.BitmapFactory.nativeDecodeAsset(BitmapFactory.java)
  4. at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:655)
  5. at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:483)
  6. at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:1157)
  7. at android.content.res.ResourcesImpl.loadDrawableForCookie(ResourcesImpl.java:720)
  8. at android.content.res.ResourcesImpl.loadDrawable(ResourcesImpl.java:571)
  9. at android.content.res.Resources.loadDrawable(Resources.java:972)
  10. at android.content.res.TypedArray.getDrawable(TypedArray.java:935)
  11. at android.view.View.<init>(View.java:4232)
  12. at android.widget.TextView.<init>(TextView.java:733)
  13. at android.widget.Button.<init>(Button.java:109)
  14. at android.widget.Button.<init>(Button.java:105)
  15. at androidx.appcompat.widget.AppCompatButton.<init>(AppCompatButton.java:71)
  16. at androidx.appcompat.widget.AppCompatButton.<init>(AppCompatButton.java:67)
  17. at androidx.appcompat.app.AppCompatViewInflater.createButton(AppCompatViewInflater.java:187)
  18. at androidx.appcompat.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:110)
  19. at androidx.appcompat.app.AppCompatDelegateImpl.createView(AppCompatDelegateImpl.java:1266)
  20. at androidx.appcompat.app.AppCompatDelegateImpl.onCreateView(AppCompatDelegateImpl.java:1316)
  21. at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:769)
  22. at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:727)
  23. at android.view.LayoutInflater.rInflate(LayoutInflater.java:858)
  24. at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
  25. at android.view.LayoutInflater.rInflate(LayoutInflater.java:861)
  26. at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
  27. at android.view.LayoutInflater.rInflate(LayoutInflater.java:861)
  28. at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
  29. at android.view.LayoutInflater.rInflate(LayoutInflater.java:861)
  30. at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
  31. at android.view.LayoutInflater.inflate(LayoutInflater.java:518)
  32. at android.view.LayoutInflater.inflate(LayoutInflater.java:426)
  33. at android.view.LayoutInflater.inflate(LayoutInflater.java:377)
  34. at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:469)
  35. at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
  36. at com.olgazelenko.esofer.AlegeTestulB.onCreate(AlegeTestulB.java:52)
  37. at android.app.Activity.performCreate(Activity.java:6666)
  38. at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
  39. at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2677)
  40. at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2789)
  41. at android.app.ActivityThread.-wrap12(ActivityThread.java)
  42. at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1527)
  43. at android.os.Handler.dispatchMessage(Handler.java:110)
  44. at android.os.Looper.loop(Looper.java:203)
  45. at android.app.ActivityThread.main(ActivityThread.java:6251)
  46. at java.lang.reflect.Method.invoke(Method.java)
  47. at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1063)
  48. 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

  1. <ScrollView
  2. android:id="@+id/ScrollView01"
  3. ...
  4. <Button...
  5. <Button...
  6. <Button...
  7. ...
  8. </ScrollView>

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

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

英文:

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

  1. &lt;ScrollView
  2. android:id=&quot;@+id/ScrollView01&quot;
  3. ...
  4. &lt;Button...
  5. &lt;Button...
  6. &lt;Button...
  7. ...
  8. &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:

确定