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