[Java]Comment desactiver le garbage collector ?

Comment desactiver le garbage collector ? [Java] - Java - Programmation

Marsh Posté le 12-06-2002 à 12:49:58    

Pour une fois, Google n'est pas mon ami :( Il me semblait que c'etait "-nogc", mais c'est pas ca ...

Reply

Marsh Posté le 12-06-2002 à 12:49:58   

Reply

Marsh Posté le 12-06-2002 à 14:31:44    

c'est possile ? [:darklord]

Reply

Marsh Posté le 12-06-2002 à 15:05:14    

benou a écrit a écrit :

c'est possile ? [:darklord]  



En effet ca me parait assez dangereux comme truc...  :heink:
Si c'est pour accélèrer l'execution d'un endroit critique, en génèral il faut faire une garbage collect juste avant de rentrer dedans... mais désactiver le garbage collector :??: pas une bonne idée à mon avis (et je crois que ce n'est même pas possible...)

Reply

Marsh Posté le 12-06-2002 à 15:05:58    

non ce n'est pas possible. Enfin c'est pas standard en tout cas (tu pourrais très bien écrire une JVM qui offre cette option pourquoi pas)


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 12-06-2002 à 15:08:13    

-noasyncgc  "don't allow asynchronous garbage collection"
-noclassgc  "disable class garbage collection"
 
Mais n'aller pas me demander ce que ça signifie exactement... Et apparemment ça n'existe plus à partir du JDK1.2

Reply

Marsh Posté le 12-06-2002 à 15:24:27    

El Scorcho a écrit a écrit :

-noasyncgc  "don't allow asynchronous garbage collection"
-noclassgc  "disable class garbage collection"
 
Mais n'aller pas me demander ce que ça signifie exactement... Et apparemment ça n'existe plus à partir du JDK1.2  




 
>> disable class garbage collection
ca doit vouloir dire qu'il ne grabage plus les Class (il n'oublie plus les .class qu'il a déjà chargé). enfin peut être ...

Reply

Marsh Posté le 12-06-2002 à 15:26:20    

de toutes façons ça n'existe plus, j'ai trouvé ça par hasard sur une machine unix qui en est encore au jdk1.1
et sur mon poste avec le 1.3 cette option n'existe plus...

Reply

Marsh Posté le 12-06-2002 à 15:30:55    

Ben "-noclassgc" ca marche encore sur ma 1.3.1 ... de toutes facons, pas de panique, c'est juste pour voir la consommation memoire totale d'une mthode que je ne peux pas inpecter autrement :
 
- je force le GC
- je note la memoire libre
- je tourne ma methode
- je note la memoire libre
 
Le fait de desacitver le GC me garantit que la soustraction des 2 nombres me donne la memoire utilisee (directement et indirectement) par ma methode.

Reply

Marsh Posté le 12-06-2002 à 15:34:17    

c'est débile ce que tu fais. Appeller System.gc() n'est en aucun cas synchrone et tu n'as aucune garantie qu'il est lancé immédiatement ...


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 12-06-2002 à 15:34:40    

forcer le gc comme tu dis ca n'existe pas ...


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 12-06-2002 à 15:34:40   

Reply

Marsh Posté le 12-06-2002 à 15:43:50    

Citation :

Calling the gc method suggests that the Java Virtual Machine expend effort toward recycling unused objects in order to make the memory they currently occupy available for quick reuse. When control returns from the method call, the Java Virtual Machine has made a best effort to reclaim space from all discarded objects.


 
meme s'il ne garantit pas le resultat (best effort), l'action de system.gc() est au moins synchrone si j'en crois la doc.
 
LeGreg

Reply

Marsh Posté le 12-06-2002 à 15:46:43    

legreg a écrit a écrit :

Citation :

Calling the gc method suggests that the Java Virtual Machine expend effort toward recycling unused objects in order to make the memory they currently occupy available for quick reuse. When control returns from the method call, the Java Virtual Machine has made a best effort to reclaim space from all discarded objects.


 
meme s'il ne garantit pas le resultat (best effort), l'action de system.gc() est au moins synchrone si j'en crois la doc.
 
LeGreg  




 
non. System.gc() n'est pas synchrone. J'en suis presque sûr


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 12-06-2002 à 16:18:49    

en fait j'ai un peu l'impression que ca depend  
de la JVM utilisée.
 
Trouvé sur le site d'IBM:
http://www-106.ibm.com/developerwo [...] 0117b.html
 
LeGreg

Reply

Marsh Posté le 12-06-2002 à 16:21:05    

legreg a écrit a écrit :

en fait j'ai un peu l'impression que ca depend  
de la JVM utilisée.



 
Ca par contre je te suis à 100%


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 12-06-2002 à 16:22:22    

j'ai appris qqch ajd cool :)
 

Citation :


This means that every time (or 99.9 percent of the time) you call System.gc(), you initiate a full GC cycle. GC may not be at all necessary, but you still force it to hack through the full mark/sweep thing. You may well consider System.gc() as System.StopEverythingForAWhile() or System.SlugMyPerfomance() calls.  


Message édité par darklord le 06-12-2002 à 16:22:29

---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 12-06-2002 à 19:52:08    

El Scorcho a écrit:

Citation :

noasyncgc  "don't allow asynchronous garbage collection"
-noclassgc  "disable class garbage collection"
 
Mais n'aller pas me demander ce que ça signifie exactement... Et apparemment ça n'existe plus à partir du JDK1.2


Dans le 1.4:
F:\javawork\src>java -X
    -Xnoclassgc       disable class garbage collection
    -Xincgc           enable incremental garbage collection
    -Xloggc:<file>    log GC status to a file with time stamps
 
à noter que:
The -X options are non-standard and subject to change without notice.
 
K.


Message édité par krosso le 06-12-2002 à 19:53:14
Reply

Marsh Posté le 13-06-2002 à 10:47:31    

De toute façon, ça ne sert à rien de vouloir activer/desactiver/lancer le GC à la main (le GC est non predictible)...
 
Le meilleur moyen de tuner une appli est de definir un heap bien ajusté.

Reply

Marsh Posté le 13-06-2002 à 10:51:04    

Gonzoide a écrit a écrit :

Ben "-noclassgc" ca marche encore sur ma 1.3.1 ... de toutes facons, pas de panique, c'est juste pour voir la consommation memoire totale d'une mthode que



 
honnetement, si tu veux controler la memoire utilisée par tes methodes passe a un autre langage que java.
il est totalement fait pour que le programmeur
ne puisse avoir aucun controle la dessus.
si ce n'est par la creation de variables, c'est la seule
chose que tu peux controler (le nombre de variables que tu  
crees par new !).
 
LeGreg

Reply

Marsh Posté le 13-06-2002 à 10:52:19    

legreg a écrit a écrit :

 
 
honnetement, si tu veux controler la memoire utilisée par tes methodes passe a un autre langage que java.
il est totalement fait pour que le programmeur
ne puisse avoir aucun controle la dessus.
si ce n'est par la creation de variables, c'est la seule
chose que tu peux controler (le nombre de variables que tu  
crees par new !).
 
LeGreg  




 
exactement. Utilise un profiler pour voir ce qui arrive...
JProbe par exemple est tres bien...si t'as de la thune!!!  :D

Reply

Sujets relatifs:

Leave a Replay

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