2013-08-12 3 views
8

Я немного путаюсь с system.exit. Я основал кое-что из этого link.Какова цель вызова System.exit() в java

, но у меня есть некоторые сомнения в моем сознании. Если я использую выход системы, что произойдет с созданными объектами, переменными и ect. Все ли разрушается, как только я назвал system.exit? Если «Да», то почему мы вынуждаем сбор мусора перед system.exit()? Если «Нет», как долго созданные объекты хранятся в JVM (памяти)? Если запустить программу снова после выхода из системы, что произойдет с предыдущими объектами, если они не будут уничтожены после вызова System.exit() ;?

Спасибо.

+0

любые предложения или советы, добро пожаловать. Спасибо – maXfenda

+1

Возможный дубликат: http: // stackoverflow.com/questions/3715967/when-should-we-call-system-exit-in-java –

+1

* «Все ли разрушается после вызова system.exit?» * - Не совсем (или сразу). 'System.exit' запускает« нормальное »завершение JVM. Часть процесса будет очищать и освобождать память, но на этом этапе весь код Java будет завершен ... – MadProgrammer

ответ

5

Я думаю, что в этом случае полезно использовать JVM как программу, запущенную на компьютере. System.exit() завершает эту программу. Ничто в программе не поддерживается операционной системой компьютера или временем выполнения JVM, хотя программа, конечно же, может писать вещи в долгосрочное хранилище. Но переменные, созданные объекты и т. Д. Все исчезли и не могут быть восстановлены.

6

Если я использую системный выход, что произойдет с созданными объектами, переменными и ect. Все ли разрушается, как только я назвал system.exit?

Только пользовательские потоки уничтожаются с помощью системного выхода.

Почему мы вынуждаем сбор мусора перед system.exit()?

Мы этого не сделаем, и это было бы не очень полезно, поскольку это ничего не может сделать.

Как долго созданные объекты хранятся в JVM (памяти)?

Пока они больше не нужны и очистки происходит, из виртуальной машины Java на самом деле выходит

Если запустить программу еще раз после выхода из системы, что будет случилось с предыдущими объектами, если они не уничтожены как только я вызвал System.exit() ;?

Они уничтожаются, когда программа заканчивается. В любом случае каждая программа получает свой собственный новый набор переменных, даже если выполняется несколько раз. Обмен программами между программами отсутствует.

+0

Thanks.got некоторые моменты :-) – maXfenda

5

Короткий ответ о том, что вы должны знать о exit:

  • Это полезно, потому что это единственный способ установить exit status.

  • Как правило, это единственное место, где вы должны использовать его в конце метода main.

  • Это приводит к завершению JVM (убивая процесс, тем самым обязательно освобождая всю память).

Смежные вопросы