cs_heavenboy
Messages postés22Date d'inscriptionjeudi 21 mai 2009StatutMembreDernière intervention 1 décembre 2009
-
3 juil. 2009 à 12:07
cs_heavenboy
Messages postés22Date d'inscriptionjeudi 21 mai 2009StatutMembreDernière intervention 1 décembre 2009
-
3 juil. 2009 à 18:45
Bonjour,
voici mon problème.
Pour effectuer un traitement sur une image, j'ai besoin de récupérer l'ensemble des pixels. Je crée donc un tableau :
int[] pix= new int[largeurImageSrc * hateurImageSrc];
Le problème est que pour des images trop grande le produit de sa hauteur par sa largeur créer un indice trop important. D'où le message d'erreur :
java.lang.OutOfMemoryError: Requested array size exceeds VM limit.
J'ai lu que ceci signifie que l'application tente d'allouer un tableau plus grand que la taille du heap.
Est-ce que quelqu'un peut m'expliquer comment augmenter la taille du heap (si possible) afin de créer un tableau d'entier plus grand. Ou bien quelqu'un a-t-il une autre solution à proposer à cela ?
J'ajoute qu'il est crucial que le tableau reste un entier.
Merci beaucoup
A voir également:
Requested array size exceeds vm limit
Java.lang.outofmemoryerror: requested array size exceeds vm limit - Meilleures réponses
Array_multisort(): array sizes are inconsistent - Meilleures réponses
kirua12
Messages postés1155Date d'inscriptionsamedi 17 janvier 2004StatutMembreDernière intervention29 avril 20117 3 juil. 2009 à 16:11
non, aucun risque, tu définis juste la taille mémoire max autorisée pour la JVM. Tu ne peux pas mettre une valeur plus grande que ta mémoire physique totale.
C'est normal que la mémoire augmente, avec ton tableau, tu alloues une grande zone mémoire et quand tu le détruis, le garbage collector fait le ménage et la mémoire utilisée décroit
cs_heavenboy
Messages postés22Date d'inscriptionjeudi 21 mai 2009StatutMembreDernière intervention 1 décembre 2009 3 juil. 2009 à 14:56
Salut
grâce à ta réponse sa fonctionne superbement. J'ai mis -Xm2048M. Et je peux faire ainsi un tableau de 477199999 cases. On dira que c'est suffisant.
Merci.
Juste une question pratique. J'ai remarqué que la mémoire vive augmentait énormément lors de la création de ce tableau de 477199999 cases. Elle monte à 2,5 GO puis redescend une fois le tableau créé. Il n'y a aucun risque pour le pc de mettre -Xm2048M plutôt que -Xm512M ?
merci, beaucoup!
Vous n’avez pas trouvé la réponse que vous recherchez ?