Erreur java.lang.OutOfMemory alors qu'il me reste de la RAM????

Erreur java.lang.OutOfMemory alors qu'il me reste de la RAM???? - Java - Programmation

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 :??:

Reply

Marsh Posté le 16-04-2004 à 13:53:13   

Reply

Marsh Posté le 16-04-2004 à 13:54:13    

Citation :

C:\>java -X
    -Xmixed           mixed mode execution (default)
    -Xint             interpreted mode execution only
    -Xbootclasspath:<directories and zip/jar files separated by ;>
                      set search path for bootstrap classes and resources
    -Xbootclasspath/a:<directories and zip/jar files separated by ;>
                      append to end of bootstrap class path
    -Xbootclasspath/p:<directories and zip/jar files separated by ;>
                      prepend in front of bootstrap class path
    -Xnoclassgc       disable class garbage collection
    -Xincgc           enable incremental garbage collection
    -Xloggc:<file>    log GC status to a file with time stamps
    -Xbatch           disable background compilation
    -Xms<size>        set initial Java heap size
   -Xmx<size>        set maximum Java heap size
    -Xss<size>        set java thread stack size
    -Xprof            output cpu profiling data
    -Xrunhprof[:help]|[:<option>=<value>, ...]
                      perform JVMPI heap, cpu, or monitor profiling
    -Xdebug           enable remote debugging
    -Xfuture          enable strictest checks, anticipating future default
    -Xrs              reduce use of OS signals by Java/VM (see documentation)
    -Xcheck:jni       perform additional checks for JNI functions
 
The -X options are non-standard and subject to change without notice.
 
C:\>


Message édité par kadreg le 16-04-2004 à 13:54:37

---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 16-04-2004 à 14:25:09    

Rapide ;)
Bon je vais voir comment parametrer JCreator avec ca...

Reply

Marsh Posté le 03-05-2004 à 14:51:59    

toujours aussi doue avec java l'b ?

Reply

Marsh Posté le 03-05-2004 à 14:53:07    

nartu elxe a écrit :

toujours aussi doue avec java l'b ?


toujours aussi doue avec son cerveau l'a ?

Reply

Marsh Posté le 03-05-2004 à 16:47:00    

Miaou?

Reply

Marsh Posté le 03-05-2004 à 16:47:40    

on peut l'attraper cette exception ?

Reply

Marsh 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.


---------------
Au royaume des sourds, les borgnes sont sourds.
Reply

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 !


---------------
trainoo.com, c'est fini
Reply

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...

Reply

Marsh Posté le 06-05-2004 à 12:51:14   

Reply

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.
 
A method is not required to declare in its throws clause any subclasses of Error that might be thrown during the execution of the method but not caught, since these errors are abnormal conditions that should never occur.


Je fais que répéter moi hein...


---------------
Au royaume des sourds, les borgnes sont sourds.
Reply

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.
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...


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 [:itm]
En fait l'algo me prend 105Mo :)

Reply

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.
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...

É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.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 06-05-2004 à 14:26:30    

nraynaud a écrit :


Le OutOfMemoryBidule peut venir d'un explosion de pile.


heu nan, là c'est une StackOverflowError qui est lancée ...

Reply

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.


---------------
trainoo.com, c'est fini
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed