Erreur java.lang.OutOfMemory alors qu'il me reste de la RAM???? - Java - Programmation
Marsh Posté le 16-04-2004 à 13:54:13
Citation : C:\>java -X |
Marsh Posté le 16-04-2004 à 14:25:09
Rapide
Bon je vais voir comment parametrer JCreator avec ca...
Marsh Posté le 03-05-2004 à 14:53:07
ReplyMarsh Posté le 03-05-2004 à 16:49:53
Taz a écrit : on peut l'attraper cette exception ? |
Oui, c'est un Throwable, mais c'est aussi une Error, donc normalement quand elle est lancée y'a plus rien à faire.
Marsh Posté le 03-05-2004 à 17:12:31
Taz a écrit : on peut l'attraper cette exception ? |
biensûr, c'est d'ailleur une excellente source de blagues inusables !
Marsh Posté le 06-05-2004 à 12:51:14
R3g a écrit : Oui, c'est un Throwable, mais c'est aussi une Error, donc normalement quand elle est lancée y'a plus rien à faire. |
Détrompe-toi, R3g, quand on l'attrape, il y a encore des choses à faire.
J'ai écrit des tas de programmes ou de servlets qui l'attrapaient avec succès.
Typiquement, dans ton cas, @ttil@, si tu la récupères, tu arrêtes ta lecture et tu mets les références vers tes objets de lecture à null, et le tour est joué.
Mais à mon avis, @ttil@, si tu as une OutOfMemoryException aussi tôt, c'est que tu ne facilites pas le boulot du ramasse-miettes. Si tu mettais la plupart de tes références à null une fois que tu as fini de lire une ligne ou un bloc de données, ça l'aiderait pas mal...
Marsh Posté le 06-05-2004 à 12:54:49
Citation : An Error is a subclass of Throwable that indicates serious problems that a reasonable application should not try to catch. Most such errors are abnormal conditions. The ThreadDeath error, though a "normal" condition, is also a subclass of Error because most applications should not try to catch it. |
Je fais que répéter moi hein...
Marsh Posté le 06-05-2004 à 13:09:13
BifaceMcLeOD a écrit : Détrompe-toi, R3g, quand on l'attrape, il y a encore des choses à faire. |
Nop, c'est que je dois traiter un fichier enorme, mais bon maintenant c'est corrigé, j'ai augmenté la taille de la mémoire de la machine virtuelle
En fait l'algo me prend 105Mo
Marsh Posté le 06-05-2004 à 13:28:06
BifaceMcLeOD a écrit : Détrompe-toi, R3g, quand on l'attrape, il y a encore des choses à faire. |
Énorme comme méthode !
C'est à peu près exactement ce qu'il ne faut pas tenter.
Le OutOfMemoryBidule peut venir d'un explosion de pile.
Marsh Posté le 06-05-2004 à 14:26:30
nraynaud a écrit : |
heu nan, là c'est une StackOverflowError qui est lancée ...
Marsh Posté le 06-05-2004 à 14:44:40
benou a écrit : heu nan, là c'est une StackOverflowError qui est lancée ... |
Uniquement dans le cas de stacks de taille fixe.
http://java.sun.com/docs/books/vms [...] .html#6654
Citation : If Java virtual machine stacks can be dynamically expanded, and expansion is attempted but insufficient memory can be made available to effect the expansion, or if insufficient memory can be made available to create the initial Java virtual machine stack for a new thread, the Java virtual machine throws an OutOfMemoryError. |
Marsh Posté le 16-04-2004 à 13:53:13
Je dois parser un fichier de 27000 lignes en java, mais à la 23000ème il me fait une exception java.lang.OutOfMemory.
Bon, je me dit que je dois abuser sur la RAM, alors je recommence l'execution en surveillant dans le gestionnaire des tâches la RAM occupé/dispo, et je me rend compte qu'il me fait l'erreur alors qu'il ne m'a pris que 20-30Mo et il m'en reste encore tout plein disponible
Vu que je peux tres difficilement parser le fichier par petits bouts (le resultat ne peut être utilisé qu'en un seul bloc), je me demande si je ne peux pas forcer java à prendre plus de mémoire