Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将调用系统。退出(0);是否从主运行垃圾回收之外的对象?_Java_Garbage Collection_Exit_Exit Code_Garbage - Fatal编程技术网

Java 将调用系统。退出(0);是否从主运行垃圾回收之外的对象?

Java 将调用系统。退出(0);是否从主运行垃圾回收之外的对象?,java,garbage-collection,exit,exit-code,garbage,Java,Garbage Collection,Exit,Exit Code,Garbage,我计划使用main方法调用的对象退出整个程序。对象有一个只运行系统的方法。退出(0)。我的问题是,这样做安全吗如果我从另一个对象运行System.exit(0),垃圾收集还会从内存中清除整个程序吗,或者从内存中清除调用类时会出现问题吗?我的想法是,要么因为JVM将被终止,调用类将被垃圾收集,或者,由于对象的堆栈帧位于主堆栈帧之上,因此从内存中清除调用类时可能会遇到问题。这主要是我对Java了解不够的问题。。。谢谢你的帮助 使用System.exit(0)将从堆栈和堆中刷新整个应用程序。在运行程序

我计划使用main方法调用的对象退出整个程序。对象有一个只运行
系统的方法。退出(0)。
我的问题是,这样做安全吗如果我从另一个对象运行
System.exit(0)
,垃圾收集还会从内存中清除整个程序吗,或者从内存中清除调用类时会出现问题吗?
我的想法是,要么因为JVM将被终止,调用类将被垃圾收集,或者,由于对象的堆栈帧位于主堆栈帧之上,因此从内存中清除调用类时可能会遇到问题。这主要是我对Java了解不够的问题。。。谢谢你的帮助

使用System.exit(0)将从堆栈和堆中刷新整个应用程序。在运行程序时使用以确认这一点。我没办法做到这一点,但我有一个应用程序,它的内存利用率可以提升到几GB。我在其中一个对象中放入了System.exit()语句,并看到所有内存都被释放。

使用System.exit(0)将从堆栈和堆中刷新整个应用程序。在运行程序时使用以确认这一点。我没办法做到这一点,但我有一个应用程序,它的内存利用率可以提升到几GB。我在其中一个对象中放入了System.exit()语句,并看到所有内存都被释放。

System.exit(任意int)将终止应用程序。本地内存和堆内存都将释放给操作系统

这将终止“java”进程。在linux上,做什么

ps-eaf | grep java

要在System.exit调用后查看进程,您将看到它已退出,并且没有任何跟踪。这意味着该进程没有运行,任何资源(内存、分配给它的cpu)都由操作系统占用

在GC方面,需要澄清的是,GC也是任何java应用程序(流程)不可分割的一部分,也会随之终止。System.exit不会提供运行GC或进行任何清理

如果需要清理,请允许关闭挂钩,在这种情况下,System.exit()将调用关闭挂钩以允许清理,例如关闭线程等。

System.exit(任意int)
将终止应用程序。本地内存和堆内存都将释放给操作系统

这将终止“java”进程。在linux上,做什么

ps-eaf | grep java

要在System.exit调用后查看进程,您将看到它已退出,并且没有任何跟踪。这意味着该进程没有运行,任何资源(内存、分配给它的cpu)都由操作系统占用

在GC方面,需要澄清的是,GC也是任何java应用程序(流程)不可分割的一部分,也会随之终止。System.exit不会提供运行GC或进行任何清理

如果需要清理,请允许使用关闭挂钩,在这种情况下,System.exit()将调用允许清理的关闭挂钩,例如关闭线程等。

System.exit()是一个静态函数,因此在何处调用它并不重要。效果与终止Java虚拟机的效果相同。JVM在终止时使用的任何资源都会返回给操作系统

来源:

System.exit()是一个静态函数,因此在何处调用它并不重要。效果与终止Java虚拟机的效果相同。JVM在终止时使用的任何资源都会返回给操作系统


来源:

它会停止整个jvm,所以我不知道您担心什么?如果你关闭你的计算机,它是否还没有清除RAM?所以如果我有另一个类,从中创建一个对象,并调用System.exit(0);在这个对象中,那就完全可以了?它与Java的内部工作没有任何关系。进程退出,它的所有资源,包括内存,都被操作系统回收。它会停止整个jvm,所以我不知道您担心什么?如果你关闭你的计算机,它是否还没有清除RAM?所以如果我有另一个类,从中创建一个对象,并调用System.exit(0);在这个对象中,那就完全可以了?它与Java的内部工作没有任何关系。进程退出,其所有资源(包括内存)由操作系统回收。当应用程序终止时,其堆栈和堆不再存在。当应用程序终止时,其堆栈和堆不再存在。