2010-05-21 11 views
10

J'ai une très longue collection avec 10k éléments, et quand vous exécutez un toString() sur l'objet, il plante. J'ai besoin d'utiliser cette sortie en quelque sorte.OutOfMemoryError quoi augmenter et comment?

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) 

J'ai besoin d'un guide étape par étape pour augmenter le tas et l'application Android. Je ne cours pas la ligne de commande.

+0

Pourquoi avez-vous besoin de créer une chaîne aussi grande? Tu ne peux pas parcourir la collection "manuellement"? – aioobe

+0

Désolé, non, cela fait partie d'un système de génération. – Pentium10

Répondre

8

Il semble qu'il y ait une limite stricte de 16 Mo d'espace mémoire sur les applications Android qui ne peuvent être traitées que par altering the Android source. Votre programme a atteint cette limite: "Mémoire insuffisante: Taille du tas = 15559 Ko". Vous aurez besoin de comprendre comment réduire l'utilisation de la mémoire de votre programme. Un bon guide pour le faire est here.

0

Si vous avez besoin de générer une chaîne de cette taille, essayez de l'écrire dans un fichier sur la carte SD. C'est la seule façon dont je peux penser à sortir cette chaîne de votre application. Si vous ajoutez les éléments un par un au fichier dont vous avez besoin, vous avez besoin de beaucoup de mémoire.