OVH Cloud OVH Cloud

System.exit(0) ?

5 réponses
Avatar
pcouas
Bonjour,

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

A+
Philippe

5 réponses

Avatar
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

Avatar
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

iD8DBQFEDKOfIwyDPySledERAucjAKCggG7VcKWRi+NgyFN62jOzLKE3agCfZR3z
LFS16EM7+sEiB4oW0Jbs/Bk =3GSF
-----END PGP SIGNATURE-----

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

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