在java中调用System.exit()的确切目的是什么

时间:2013-08-12 10:36:23

标签: java object garbage-collection jvm systemexit

我对system.exit有点困惑。我从这个link创建了一些东西。

但我心里有些疑惑。如果我使用系统退出,创建的对象,变量和ect会发生什么。一旦我调用system.exit,一切都会被破坏吗?如果“是”那么为什么我们强制在system.exit()之前进行垃圾收集?如果“否”创建的对象存储在JVM(内存)中多长时间?如果在退出系统后再次运行该程序,如果在我调用System.exit()后它们没有被销毁,前一个对象会发生什么情况??

感谢。

3 个答案:

答案 0 :(得分:6)

  

如果我使用系统退出,创建的对象,变量等会发生什么。一旦我调用system.exit,一切都会被破坏吗?

只有用户线程被系统出口销毁。

  

为什么我们在system.exit()之前强制执行垃圾收集?

我们没有,因为这可能没有做任何事情,所以它不会非常有用。

  

创建的对象存储在JVM(内存)中的时间有多长?

直到不再需要它们并且发生清理时,JVM真正退出

  

如果在退出系统后再次运行该程序,如果在我调用System.exit()之后它们没有被销毁,前一个对象会发生什么情况??

程序完成后会被销毁。在任何情况下,即使多次运行,每个程序都会获得自己的新变量集。程序之间没有共享变量。

答案 1 :(得分:5)

我认为在这种情况下,将JVM视为在计算机上运行的程序是有用的。 System.exit()终止该程序。程序中的任何内容都不会由计算机的操作系统或JVM运行时保留,但程序当然可以将内容写入长期存储。但变量,创建的objs等都消失了,无法恢复。

答案 2 :(得分:5)

您应该了解exit的简短回答:

  • 这很有用,因为这是设置exit status的唯一方法。

  • 通常,您应该使用它的唯一地方是main方法的末尾。

  • 导致JVM终止(终止进程,从而必然释放所有内存)。