java.lang.OutOfMemoryError: 内存问题

huangapple 未分类评论50阅读模式
英文:

java.lang.OutOfMemoryError: issuse

问题

我有一部三星手机,型号是SM-A750F,我的安卓版本是9,我有以下日志:

  1. java.lang.OutOfMemoryError尝试分配 276824056 字节的内存但剩余 25165824 字节和 117MB 直到 OOM最大允许占用空间为 170196328‬,增长限制为 268435456
  2. dalvik.system.VMRuntime.newUnpaddedArray(Native Method)
  3. com.android.internal.util.ArrayUtils.newUnpaddedCharArray(ArrayUtils.java:51)
  4. android.text.SpannableStringBuilder.resizeFor(SpannableStringBuilder.java:145)
  5. android.text.SpannableStringBuilder.change(SpannableStringBuilder.java:378)
  6. android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:548)
  7. android.text.SpannableStringBuilder.append(SpannableStringBuilder.java:269)
  8. android.widget.HeaderViewListAdapter.getView(HeaderViewListAdapter.java:230)
  9. android.widget.AbsListView.obtainView(AbsListView.java:3219)
  10. android.widget.ListView.makeAndAddView(ListView.java:2219)
  11. android.widget.ListView.fillUp(ListView.java:861)
  12. android.widget.ListView.fillGap(ListView.java:800)
  13. android.widget.AbsListView.trackMotionScroll(AbsListView.java:8221)
  14. android.widget.ListView.trackMotionScroll(ListView.java:2138)
  15. android.widget.AbsListView$FlingRunnable.run(AbsListView.java:7644)
  16. android.view.Choreographer$CallbackRecord.run(Choreographer.java:949)
  17. android.view.Choreographer.doCallbacks(Choreographer.java:761)
  18. android.view.Choreographer.doFrame(Choreographer.java:693)
  19. android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:935)
  20. android.os.Handler.handleCallback(Handler.java:873)
  21. android.os.Handler.dispatchMessage(Handler.java:99)
  22. android.os.Looper.loop(Looper.java:214)
  23. android.app.ActivityThread.main(ActivityThread.java:7078)
  24. java.lang.reflect.Method.invoke(Native Method)
  25. com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494)
  26. com.android.internal.os.ZygoteInit.main(ZygoteInit.java:964)

我的代码是:

  1. public static CharSequence c(android.view.ViewGroup r6, TextEmojiLabel textEmojiLabel, java.lang.Object r8, StringBuilder sb) {
  2. if (!getBoolTrue(textEmojiLabel.getContext(), "show_mod_groups_check")) {
  3. return sb.toString();
  4. }
  5. if (f(r6, r8, z)) {
  6. SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder();
  7. SpannableString spannableString = new SpannableString(getString(textEmojiLabel.getContext(), group_mod()));
  8. if (getBool(textEmojiLabel.getContext(), "show_mod_in_groups_color_picker")) {
  9. spannableString.setSpan(new ForegroundColorSpan(getIntfromKey(textEmojiLabel.getContext(), "show_mod_in_groups_color_picker")), 0, spannableString.length(), 0);
  10. } else if (getBool(textEmojiLabel.getContext(), "participant_name_color_picker")) {
  11. spannableString.setSpan(new ForegroundColorSpan(getIntfromKey(textEmojiLabel.getContext(), "participant_name_color_picker")), 0, spannableString.length(), 0);
  12. }
  13. if (getLanguage()) {
  14. String str = r8.A0N;
  15. if (!TextUtils.isEmpty(str)) {
  16. spannableStringBuilder.append(str).append("").append(" - ").append(spannableString);
  17. }
  18. } else {
  19. SpannableStringBuilder append = spannableStringBuilder.append("");
  20. String str2 = r8.A0N;
  21. if (!TextUtils.isEmpty(str2)) {
  22. append.append(str2).append(" - ").append(spannableString);
  23. }
  24. }
  25. return spannableStringBuilder;
  26. }
  27. return sb.toString();
  28. }

我认为这个错误是由Java虚拟机(JVM)引发的,当对象由于内存空间不足而无法分配时,垃圾收集器也无法释放一些空间。

我不知道为什么会出现内存不足的情况,以及如何修复它。

英文:

I have samsung phone with MODEL SM-A750F
my ANDROID VERSION is 9
and I have this log

  1. java.lang.OutOfMemoryError: Failed to allocate a 276824056 byte allocation with 25165824 free bytes and 117MB until OOM, max allowed footprint 170196328‬, growth limit 268435456
  2. at dalvik.system.VMRuntime.newUnpaddedArray(Native Method)
  3. at com.android.internal.util.ArrayUtils.newUnpaddedCharArray(ArrayUtils.java:51)
  4. at android.text.SpannableStringBuilder.resizeFor(SpannableStringBuilder.java:145)
  5. at android.text.SpannableStringBuilder.change(SpannableStringBuilder.java:378)
  6. at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:548)
  7. at android.text.SpannableStringBuilder.append(SpannableStringBuilder.java:269)
  8. at android.widget.HeaderViewListAdapter.getView(HeaderViewListAdapter.java:230)
  9. at android.widget.AbsListView.obtainView(AbsListView.java:3219)
  10. at android.widget.ListView.makeAndAddView(ListView.java:2219)
  11. at android.widget.ListView.fillUp(ListView.java:861)
  12. at android.widget.ListView.fillGap(ListView.java:800)
  13. at android.widget.AbsListView.trackMotionScroll(AbsListView.java:8221)
  14. at android.widget.ListView.trackMotionScroll(ListView.java:2138)
  15. at android.widget.AbsListView$FlingRunnable.run(AbsListView.java:7644)
  16. at android.view.Choreographer$CallbackRecord.run(Choreographer.java:949)
  17. at android.view.Choreographer.doCallbacks(Choreographer.java:761)
  18. at android.view.Choreographer.doFrame(Choreographer.java:693)
  19. at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:935)
  20. at android.os.Handler.handleCallback(Handler.java:873)
  21. at android.os.Handler.dispatchMessage(Handler.java:99)
  22. at android.os.Looper.loop(Looper.java:214)
  23. at android.app.ActivityThread.main(ActivityThread.java:7078)
  24. at java.lang.reflect.Method.invoke(Native Method)
  25. at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494)
  26. at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:964

My code is

  1. public static CharSequence c(android.view.ViewGroup r6, TextEmojiLabel textEmojiLabel, java.lang.Object r8, StringBuilder sb) {
  2. if (!getBoolTrue(textEmojiLabel.getContext(), "show_mod_groups_check")) {
  3. return sb.toString();
  4. }
  5. if (f(r6, r8, z)) {
  6. SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder();
  7. SpannableString spannableString = new SpannableString(getString(textEmojiLabel.getContext(), group_mod()));
  8. if (getBool(textEmojiLabel.getContext(), "show_mod_in_groups_color_picker")) {
  9. spannableString.setSpan(new ForegroundColorSpan(getIntfromKey(textEmojiLabel.getContext(), "show_mod_in_groups_color_picker")), 0, spannableString.length(), 0);
  10. } else if (getBool(textEmojiLabel.getContext(), "participant_name_color_picker")) {
  11. spannableString.setSpan(new ForegroundColorSpan(getIntfromKey(textEmojiLabel.getContext(), "participant_name_color_picker")), 0, spannableString.length(), 0);
  12. }
  13. if (getLanguage()) {
  14. String str = r8.A0N;
  15. if (!TextUtils.isEmpty(str)) {
  16. spannableStringBuilder.append(str).append("").append(" - ").append(spannableString);
  17. }
  18. } else {
  19. SpannableStringBuilder append = spannableStringBuilder.append("");
  20. String str2 = r8.A0N;
  21. if (!TextUtils.isEmpty(str2)) {
  22. append.append(str2).append(" - ").append(spannableString);
  23. }
  24. }
  25. return spannableStringBuilder;
  26. }
  27. return sb.toString();
  28. }

I think This error is thrown by the Java Virtual Machine (JVM) when an object cannot be allocated due to lack of memory space and also, the garbage collector cannot free some space.
I have no idea or why its out of memory. How to fix it?

huangapple
  • 本文由 发表于 2020年5月5日 07:33:20
  • 转载请务必保留本文链接:https://java.coder-hub.com/61603370.html
匿名

发表评论

匿名网友

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

确定