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

在java中调用System.exit()的确切目的是什么,java,object,garbage-collection,jvm,systemexit,Java,Object,Garbage Collection,Jvm,Systemexit,我对system.exit有点困惑。我从中发现了一些东西 但我心里有些疑惑。如果我使用system exit,那么所创建的对象、变量和ect将发生什么情况。一旦我呼叫system.exit,所有东西都被摧毁了吗?如果“是”,那么为什么我们要在system.exit()之前强制执行垃圾收集?如果“否”,创建的对象在JVM(内存)中存储多长时间?如果在退出系统后再次运行该程序,如果调用system.exit();,之前的对象未被销毁,会发生什么情况 谢谢。我认为在这种情况下,将JVM视为在计算机上运

我对system.exit有点困惑。我从中发现了一些东西

但我心里有些疑惑。如果我使用system exit,那么所创建的对象、变量和ect将发生什么情况。一旦我呼叫system.exit,所有东西都被摧毁了吗?如果“是”,那么为什么我们要在system.exit()之前强制执行垃圾收集?如果“否”,创建的对象在JVM(内存)中存储多长时间?如果在退出系统后再次运行该程序,如果调用system.exit();,之前的对象未被销毁,会发生什么情况


谢谢。

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

如果我使用system exit,那么所创建的对象、变量和ect将发生什么情况。一旦我呼叫system.exit,所有东西都被摧毁了吗

系统出口仅销毁用户线程

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

我们不这样做,这也不会很有用,因为这可能不会起任何作用

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

在不再需要它们并进行清理之前,JVM的一部分实际上是存在的

如果在退出系统后再次运行该程序,如果调用system.exit();,之前的对象未被销毁,会发生什么情况


当程序结束时,它们将被销毁。在任何情况下,即使运行多次,每个程序都会获得自己的新变量集。程序之间不共享变量。

关于退出
的简短回答是:

  • 它很有用,因为这是设置参数的唯一方法

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

  • 它导致JVM终止(终止进程,因此必然释放所有内存)


有什么建议吗,?欢迎光临。感谢可能的重复:“一旦我呼叫系统,所有东西都被销毁了吗?退出?”-不完全是(或者立即)
System.exit
启动JVM的“正常”终止。这个过程的一部分是清理和释放内存,但到那个阶段,所有的Java代码都将被终止……AFAIK System.exit只是结束当前运行的JVM,所以其中的所有内容都将丢失。你为什么说“我们在system.exit()之前强制进行垃圾收集?”@AndrewMartin我对system.exit有点困惑。我从这个“链接”中发现了一些东西。仔细看,我把那个链接发到了老帖子上。我明白,但有些观点令人怀疑。这就是我写这篇文章的原因。