2010-05-21 20 views
10

Tengo una colección muy larga con 10k elementos, y cuando ejecuto toString() en el objeto se bloquea. Necesito usar esta salida de alguna manera.OutOfMemoryError ¿qué aumentar y cómo?

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) 

Necesito una guía paso a paso sobre cómo aumentar el montón para Android y la aplicación. No ejecuto la línea de comando.

+0

¿Por qué necesita crear una cadena tan grande? ¿No puedes iterar a través de la colección "manualmente"? – aioobe

+0

Lo siento, no, es parte de un sistema de generación. – Pentium10

Respuesta

8

Parece que hay un límite estricto de 16 MB de espacio de montón en las aplicaciones de Android que solo se puede solucionar con altering the Android source. Su programa ha alcanzado este límite: "Sin memoria: Tamaño del montón = 15559KB". Tendrá que descubrir cómo reducir el uso de memoria de su programa. Una buena guía para hacer esto es here.

0

Si necesita generar una cadena con ese tamaño, intente escribirla en un archivo de la tarjeta SD. Esa es la única forma en que puedo pensar para sacar esta cadena de tu aplicación. Si agrega los elementos uno por uno al archivo, necesita tanta memoria.