2010-05-21 50 views
10

我有一個非常長的10k項目的集合,並且當它在對象上運行toString()時崩潰。我需要以某種方式使用這個輸出。OutOfMemoryError增加什麼以及如何?

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應用程序。我不運行命令行。

+0

爲什麼你需要創建這麼大的字符串?你不能通過手動迭代集合嗎? – aioobe 2010-05-21 10:17:28

+0

對不起,它是一代系統的一部分。 – Pentium10 2010-05-21 10:20:21

回答

8

似乎在Android應用上有16 MB堆空間的硬限制,只能由altering the Android source來解決。您的程序已達到此限制:「內存不足:堆大小= 15559KB」。你需要弄清楚如何減少程序的內存使用量。一個很好的指南是here

0

如果您需要輸出具有該大小的字符串,請嘗試將其寫入SD卡上的文件中。這是我能想到的將這個字符串從您的應用程序中取出的唯一方法。如果您將這些項目逐個添加到您想要的內存文件中。

相關問題