2013-08-12 8 views
8

Ich bin ein wenig Verwirrung mit system.exit. Ich gründete einige Dinge über diese link.Was ist der genaue Zweck des Aufrufs von System.exit() in Java

aber ich habe einige Zweifel in meinem Kopf. Wenn ich System-Exit verwende, was passiert mit den erstellten Objekten, Variable und ect. Wird alles zerstört, nachdem ich system.exit aufgerufen habe? Wenn "Ja", warum zwingen wir dann die Garbage Collection vor system.exit()? Wenn "Nein" wie lange die erstellten Objekte in der JVM (Speicher) gespeichert sind? Wenn das Programm nach dem Verlassen des Systems erneut ausgeführt wird, was passiert mit den vorherigen Objekten, wenn sie nicht zerstört wurden, nachdem ich System.exit() aufgerufen habe?

Danke.

+0

Anregungen oder Ratschläge ,? alles herzlich willkommen. Danke – maXfenda

+1

Mögliches Duplikat von: http: // stackoverflow.com/questions/3715967/when-wir-rufen-system-exit-in-java –

+1

* "Wird alles zerstört, sobald ich System.exit aufgerufen habe?" * - Nicht genau (oder sofort). 'System.exit' startet eine" normale "Beendigung der JVM. Ein Teil des Prozesses wird sein, Speicher zu säubern und freizugeben, aber zu diesem Zeitpunkt ist der gesamte Java-Code beendet worden ... – MadProgrammer

Antwort

5

Ich denke in diesem Fall ist es nützlich, die JVM als ein Programm auf einem Computer zu sehen. System.exit() beendet das Programm. Nichts in dem Programm wird von dem Betriebssystem des Computers oder der JVM-Laufzeit beibehalten, obwohl das Programm natürlich Dinge in den Langzeitspeicher schreiben kann. Aber Variablen, erstellte Objs usw. sind alle weg und können nicht wiederhergestellt werden.

6

Wenn ich System-Exit verwende, was passiert mit den erstellten Objekten, Variable und ect. Wird alles zerstört, nachdem ich system.exit aufgerufen habe?

Nur Benutzer-Threads werden durch einen System-Exit zerstört.

Warum erzwingen wir die Garbage Collection vor system.exit()?

Wir nicht und es wäre nicht sehr nützlich, da dies nichts tun könnte.

Wie lange sind die erstellten Objekte in der JVM (Speicher) gespeichert?

Bis sie nicht mehr benötigt werden und eine Sanierung stattfindet, von der JVM wirklich verlässt

Wenn das Programm erneut nach dem Austritt aus dem System laufen, was zu den bisherigen Objekten geschehen wird, wenn sie nicht zerstört Sobald ich System.exit() aufgerufen habe?

Sie werden zerstört, wenn das Programm beendet wird. In jedem Fall erhält jedes Programm seine eigenen neuen Variablen, selbst wenn es mehrmals ausgeführt wird. Es gibt keine Freigabe von Variablen zwischen Programmen.

+0

Danke.Got ein paar Punkte :-) – maXfenda

5

Die kurze Antwort von dem, was Sie wissen sollten über exit:

  • Es ist nützlich, weil es der einzige Weg, um die exit status einzustellen.

  • Im Allgemeinen ist der einzige Ort, den Sie verwenden sollten, am Ende einer main Methode.

  • Es führt zu einer JVM-Beendigung (der Prozess wird beendet, wodurch der gesamte Speicher freigegeben wird).

Verwandte Themen