当前位置: 首页 > 面试题库 >

将调用System.exit(0); 从主要运行垃圾收集外部的对象?

齐胜涝
2023-03-14
问题内容

我计划使用由我的main方法调用的对象来退出整个程序。对象有一个只运行一个方法的方法System.exit(0). 我的问题是,这是安全的事情吗?
如果我System.exit(0)从另一个对象运行,垃圾回收仍会从内存中清除整个程序,还是从内存中清除调用类有问题?
我的想法是,或者由于JVM将终止,调用类将被垃圾回收,或者由于对象的堆栈框架位于主堆栈框架之上,所以我可能无法从内存中清除调用类。这主要是我对Java不够了解的问题…感谢您的帮助!


问题答案:

System.exit()是静态函数,因此在哪里调用它都无所谓。终止Java虚拟机的效果是相同的。JVM在终止时使用的任何资源都将回馈给OS。

来源:http
:
//docs.oracle.com/javase/7/docs/api/java/lang/System.html#exit(int)



 类似资料:
  • 我遇到了一个JNI程序随机内存不足的问题。 这是一个32位java程序,它读取文件,进行一些图像处理,通常使用250MB到1GB。然后丢弃所有这些对象,然后程序对通常需要100-250MB的JNI程序进行一系列调用。 当交互运行时,我从未见过问题。但是,当对许多文件连续运行批处理操作时,JNI程序将随机运行内存溢出。它可能对一个或两个文件有内存问题,然后对下一个10个文件运行正常,然后再次出现故障

  • 有人能给我解释一下原因吗?

  • Kubernetes 垃圾收集器的角色是删除指定的对象,这些对象曾经有但以后不再拥有 Owner 了。 注意:垃圾收集是 beta 特性,在 Kubernetes 1.4 及以上版本默认启用。 Owner 和 Dependent 一些 Kubernetes 对象是其它一些的 Owner。例如,一个 ReplicaSet 是一组 Pod 的 Owner。具有 Owner 的对象被称为是 Owner

  • 我有一个Springboot Maven项目,它使用@JmsListener从队列中读取消息。 如果没有事件进来,堆内存会慢慢增加。当消息传来时,堆内存会快速增加。但是堆内存永远不会下降(查看下图)。 如果我添加系统。gc()在receiver方法的末尾,垃圾收集器正在按预期完成其工作。但这绝对不是好的做法。 如何确保gc在适当的时间运行。任何帮助都将不胜感激! 堆内存使用率 接收方法

  • 我试图了解垃圾收集是如何工作的。我很清楚以下几点: 当JVM无法将对象分配给年轻一代时,它将触发小型GC 列表项 当堆满时,JVM将触发完整的GC(两个次要的主要GC)。 但是,年轻一代和老一代中不再引用、符合GC条件但没有触发GC的对象如何(即年轻/老一代堆空间未满,因此没有GC发生) 这是否意味着在GC发生之前,这些对象将保留在年轻/老一代堆空间中? 我的阅读材料 > http://www.c

  • 问题内容: 我有两节课 假设我在代码中使用对象B [say ],并在最终使用它后将其设置为。我知道B的对象现在可用于垃圾回收了。 我知道在将b设置为null之后,它将 立即有资格 进行垃圾回收吗?但是类型A的对象呢?将B设置为以后,是否可以 立即 将其用于垃圾回收?还是 在B被垃圾回收之后 才有资格 进行 垃圾回收 ? 从理论上讲,在对B进行垃圾收集之前,还有参考吗?因此,SUN JVM编译器将在