J'ai remarqu=E9 sous Linux, qu'un "Main" se terminant par System.exit(0)
rend plus vite la main qu'un programme n'ayant pas cette derniere ligne
?
Mais pourquoi ?
Merci de m'=E9clairer sur ce point
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Alain
Bonjour,
J'ai remarqué sous Linux, qu'un "Main" se terminant par System.exit(0) rend plus vite la main qu'un programme n'ayant pas cette derniere ligne ? Mais pourquoi ?
une hypothèse (a vérifier) est que System.exit(0) sors violemment avec un exit() (LIBC) sans faire de garbage collect ni aucun nettoyage ... et que la sortie de Main fait un gc et ferme tout les ressources
Bonjour,
J'ai remarqué sous Linux, qu'un "Main" se terminant par System.exit(0)
rend plus vite la main qu'un programme n'ayant pas cette derniere ligne
?
Mais pourquoi ?
une hypothèse (a vérifier) est que System.exit(0) sors violemment avec
un exit() (LIBC) sans faire de garbage collect ni aucun nettoyage
...
et que la sortie de Main fait un gc et ferme tout les ressources
J'ai remarqué sous Linux, qu'un "Main" se terminant par System.exit(0) rend plus vite la main qu'un programme n'ayant pas cette derniere ligne ? Mais pourquoi ?
une hypothèse (a vérifier) est que System.exit(0) sors violemment avec un exit() (LIBC) sans faire de garbage collect ni aucun nettoyage ... et que la sortie de Main fait un gc et ferme tout les ressources
Fabien Bergeret
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
Bonjour,
J'ai remarqué sous Linux, qu'un "Main" se terminant par System.exit(0) rend plus vite la main qu'un programme n'ayant pas cette derniere ligne ? Mais pourquoi ? Merci de m'éclairer sur ce point
A+ Philippe
Avec le programme suivant :
public class Test { public static void main(String args[]){ for ( int i = 0 ; i < 1000000; i++ ); if ( args.length == 0 ) System.exit(0); } }
j'obtiens les temps suivants :
:/tmp$ time java Test toto
real 0m0.331s user 0m0.234s sys 0m0.032s :/tmp$ time java Test
real 0m0.330s user 0m0.237s sys 0m0.029s
On peut pas dire que l'un est plus rapide que l'autre ... -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.2 (GNU/Linux) Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org
J'ai remarqué sous Linux, qu'un "Main" se terminant par System.exit(0)
rend plus vite la main qu'un programme n'ayant pas cette derniere ligne
?
Mais pourquoi ?
Merci de m'éclairer sur ce point
A+
Philippe
Avec le programme suivant :
public class Test {
public static void main(String args[]){
for ( int i = 0 ; i < 1000000; i++ );
if ( args.length == 0 )
System.exit(0);
}
}
j'obtiens les temps suivants :
fabien@walhalla:/tmp$ time java Test toto
real 0m0.331s
user 0m0.234s
sys 0m0.032s
fabien@walhalla:/tmp$ time java Test
real 0m0.330s
user 0m0.237s
sys 0m0.029s
On peut pas dire que l'un est plus rapide que l'autre ...
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org
J'ai remarqué sous Linux, qu'un "Main" se terminant par System.exit(0) rend plus vite la main qu'un programme n'ayant pas cette derniere ligne ? Mais pourquoi ? Merci de m'éclairer sur ce point
A+ Philippe
Avec le programme suivant :
public class Test { public static void main(String args[]){ for ( int i = 0 ; i < 1000000; i++ ); if ( args.length == 0 ) System.exit(0); } }
j'obtiens les temps suivants :
:/tmp$ time java Test toto
real 0m0.331s user 0m0.234s sys 0m0.032s :/tmp$ time java Test
real 0m0.330s user 0m0.237s sys 0m0.029s
On peut pas dire que l'un est plus rapide que l'autre ... -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.2 (GNU/Linux) Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org
public class Test { public static void main(String args[]){ for ( int i = 0 ; i < 1000000; i++ ); if ( args.length == 0 ) System.exit(0); } }
On peut pas dire que l'un est plus rapide que l'autre ...
D'un autre coté, tu n'as aucun objet instancié donc on peut pas juger du garbage collecting ou non etc ...
pcouas
Bonjour,
J'ai clairement une difference, mon programme utilise des librairies tel que itext pour le PDF et Pja pour la simulation de la couche X11. Je constate clairement une différence, je me pose la question si le System.exit(0) est propre et si toutes les ressources sont bien libérées.
Philippe
Bonjour,
J'ai clairement une difference, mon programme utilise des librairies
tel que itext pour le PDF et Pja pour la simulation de la couche X11.
Je constate clairement une différence, je me pose la question si le
System.exit(0) est propre et si toutes les ressources sont bien
libérées.
J'ai clairement une difference, mon programme utilise des librairies tel que itext pour le PDF et Pja pour la simulation de la couche X11. Je constate clairement une différence, je me pose la question si le System.exit(0) est propre et si toutes les ressources sont bien libérées.
Philippe
pcouas
Et surtout es ce que mon programme qui tourne sous Linux ou AIX, va t il à un moment ou un autre poser des problèmes à l' OS. J'ai déja vu des OS planté (AIX 5.2) à cause de la JVM d'IBM par exemple le system.exit(0) est il sans risque ?
A+ Philippe
Et surtout es ce que mon programme qui tourne sous Linux ou AIX, va t
il à un moment ou un autre poser des problèmes à l' OS.
J'ai déja vu des OS planté (AIX 5.2) à cause de la JVM d'IBM par
exemple
le system.exit(0) est il sans risque ?
Et surtout es ce que mon programme qui tourne sous Linux ou AIX, va t il à un moment ou un autre poser des problèmes à l' OS. J'ai déja vu des OS planté (AIX 5.2) à cause de la JVM d'IBM par exemple le system.exit(0) est il sans risque ?