2013-08-12 7 views
8

Sono in un po 'di confusione con system.exit. Ho fondato alcune cose su questo link.Qual è lo scopo esatto di chiamare System.exit() in java

ma ho qualche dubbio nella mia mente. Se utilizzo l'uscita di sistema, cosa succederà agli oggetti creati, variabili e ect. Tutto viene distrutto una volta che ho chiamato system.exit? Se "Sì", allora perché forziamo alla garbage collection prima di system.exit()? Se "No", per quanto tempo gli oggetti creati sono memorizzati nella JVM (memoria)? Se esegui di nuovo il programma dopo l'uscita dal sistema, cosa succederà agli oggetti precedenti se non vengono distrutti una volta che ho chiamato System.exit() ;?

Grazie.

+0

qualsiasi suggerimento o consigli ,? qualcosa di molto caloroso benvenuto. Grazie – maXfenda

+1

Possibile duplicato di: http: // StackOverflow.it/questions/3715967/when-should-we-call-system-exit-in-java –

+1

* "Tutto viene distrutto dopo aver chiamato system.exit?" * - Non esattamente (o immediatamente). 'System.exit' inizia una terminazione" normale "della JVM. Parte del processo sarà la pulizia e la memoria libera, ma a quel punto, tutto il codice Java sarà stato terminato ... – MadProgrammer

risposta

5

Penso che in questo caso sia utile pensare alla JVM come a un programma in esecuzione su un computer. System.exit() termina quel programma. Nulla all'interno del programma è mantenuto dal sistema operativo del computer o dal runtime JVM, sebbene il programma, naturalmente, possa scrivere cose sull'archiviazione a lungo termine. Ma le variabili, gli oggetti creati e così via sono tutti andati e non possono essere ripristinati.

6

Se utilizzo l'uscita di sistema, cosa sarà successo agli oggetti creati, variabili e ect. Tutto viene distrutto una volta che ho chiamato system.exit?

Solo i thread utente vengono distrutti da un'uscita di sistema.

perché forziamo alla raccolta dati obsoleti prima di system.exit()?

Non lo facciamo e non sarebbe molto utile in quanto ciò potrebbe non fare nulla.

per quanto tempo gli oggetti creati sono memorizzati nella JVM (memoria)?

Fino a quando non sono più necessari e su pulito si verifica, della JVM esce davvero

Se eseguire nuovamente il programma dopo l'uscita dal sistema, ciò che è accaduto agli oggetti precedenti, se non distrutte una volta ho chiamato System.exit() ;?

Sono distrutti al termine del programma. In ogni caso, ogni programma ottiene il proprio nuovo set di variabili anche se eseguito più volte. Non c'è condivisione di variabili tra programmi.

+0

Grazie.got alcuni punti :-) – maXfenda

5

La risposta breve di quello che dovete sapere su exit:

  • E 'utile perché è l'unico modo per impostare il exit status.

  • In genere, l'unico posto da utilizzare è alla fine di un metodo main.

  • Essa si traduce in terminazione JVM (uccidendo il processo, quindi necessariamente liberare tutta la memoria).