我对system.exit有点困惑。我从这个link创建了一些东西。
但我心里有些疑惑。如果我使用系统退出,创建的对象,变量和ect会发生什么。一旦我调用system.exit,一切都会被破坏吗?如果“是”那么为什么我们强制在system.exit()之前进行垃圾收集?如果“否”创建的对象存储在JVM(内存)中多长时间?如果在退出系统后再次运行该程序,如果在我调用System.exit()后它们没有被销毁,前一个对象会发生什么情况??
感谢。
答案 0 :(得分:6)
如果我使用系统退出,创建的对象,变量等会发生什么。一旦我调用system.exit,一切都会被破坏吗?
只有用户线程被系统出口销毁。
为什么我们在system.exit()之前强制执行垃圾收集?
我们没有,因为这可能没有做任何事情,所以它不会非常有用。
创建的对象存储在JVM(内存)中的时间有多长?
直到不再需要它们并且发生清理时,JVM真正退出
如果在退出系统后再次运行该程序,如果在我调用System.exit()之后它们没有被销毁,前一个对象会发生什么情况??
程序完成后会被销毁。在任何情况下,即使多次运行,每个程序都会获得自己的新变量集。程序之间没有共享变量。
答案 1 :(得分:5)
我认为在这种情况下,将JVM视为在计算机上运行的程序是有用的。 System.exit()终止该程序。程序中的任何内容都不会由计算机的操作系统或JVM运行时保留,但程序当然可以将内容写入长期存储。但变量,创建的objs等都消失了,无法恢复。
答案 2 :(得分:5)
您应该了解exit
的简短回答:
这很有用,因为这是设置exit status的唯一方法。
通常,您应该使用它的唯一地方是main
方法的末尾。
导致JVM终止(终止进程,从而必然释放所有内存)。