【问题标题】:OutOfMemoryError what to increase and how?OutOfMemoryError 增加什么以及如何增加?
【发布时间】:2011-02-22 07:03:37
【问题描述】:

我有一个包含 10k 个项目的非常长的集合,当在对象上运行 toString() 时它会崩溃。我需要以某种方式使用这个输出。

05-21 12:59:44.586: ERROR/dalvikvm-heap(6415): Out of memory on a 847610-byte allocation.
05-21 12:59:44.636: ERROR/dalvikvm(6415): Out of memory: Heap Size=15559KB, Allocated=12932KB, Bitmap Size=613KB
05-21 12:59:44.636: ERROR/AndroidRuntime(6415): Uncaught handler: thread main exiting due to uncaught exception
05-21 12:59:44.636: ERROR/AndroidRuntime(6415): java.lang.OutOfMemoryError
05-21 12:59:44.636: ERROR/AndroidRuntime(6415):     at java.lang.AbstractStringBuilder.enlargeBuffer(AbstractStringBuilder.java:97)
05-21 12:59:44.636: ERROR/AndroidRuntime(6415):     at java.lang.AbstractStringBuilder.append0(AbstractStringBuilder.java:155)
05-21 12:59:44.636: ERROR/AndroidRuntime(6415):     at java.lang.StringBuilder.append(StringBuilder.java:202)
05-21 12:59:44.636: ERROR/AndroidRuntime(6415):     at java.util.AbstractCollection.toString(AbstractCollection.java:384)

我需要逐步指导如何增加 Android 应用程序的堆。我不运行命令行。

【问题讨论】:

  • 为什么需要创建这么大的字符串?您不能“手动”遍历集合吗?
  • 抱歉,不,它是生成系统的一部分。

标签: java android out-of-memory heap-memory


【解决方案1】:

Android 应用似乎存在 16 MB 堆空间的硬性限制,只能由 altering the Android source 解决。您的程序已达到此限制:“内存不足:堆大小 = 15559KB”。您需要弄清楚如何减少程序的内存使用量。一个很好的指南是here

【讨论】:

    【解决方案2】:

    如果您需要输出具有该大小的字符串,请尝试将其写入 SD 卡上的文件中。这是我能想到的将这个字符串从你的应用程序中取出的唯一方法。如果您将项目一一附加到您想要的文件中,则需要那么多内存。

    【讨论】:

      猜你喜欢
      • 2011-12-13
      • 2013-07-06
      • 1970-01-01
      • 1970-01-01
      • 2018-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-22
      相关资源
      最近更新 更多