Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.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中的垃圾收集静态变量_Java_Unix - Fatal编程技术网

Java中的垃圾收集静态变量

Java中的垃圾收集静态变量,java,unix,Java,Unix,我正在Unix机器上运行一个Java进程。如果我想停止应用程序,我只是使用shell脚本终止进程 我的问题是: 在终止进程后,静态变量如何被垃圾收集 我是否需要将每个静态变量设置为null以收回内存或JVM本身立即执行此操作?Java将自己执行垃圾收集。即使将其设置为null,也无法强制JVM执行垃圾收集。Java本身将执行垃圾收集。即使将其设置为null,也不能强制JVM执行垃圾收集。如果您在unix机器上,并强制执行线程转储(kill-3),则应强制执行垃圾收集 静态变量由类加载器引用的类对

我正在Unix机器上运行一个Java进程。如果我想停止应用程序,我只是使用shell脚本终止进程

我的问题是:

在终止进程后,静态变量如何被垃圾收集


我是否需要将每个静态变量设置为null以收回内存或JVM本身立即执行此操作?

Java将自己执行垃圾收集。即使将其设置为null,也无法强制JVM执行垃圾收集。

Java本身将执行垃圾收集。即使将其设置为null,也不能强制JVM执行垃圾收集。

如果您在unix机器上,并强制执行线程转储(kill-3),则应强制执行垃圾收集

静态变量由类加载器引用的类对象引用-因此,当类加载器变得可省略以供收集时,您的静态变量也将如此


将null赋值给对象或System.gc()不会启动垃圾收集,它们只是表示垃圾收集的资格。终止进程会将整个java堆返回给系统。

如果您在unix机器上,并强制执行线程转储(kill-3),则应强制执行垃圾收集

静态变量由类加载器引用的类对象引用-因此,当类加载器变得可省略以供收集时,您的静态变量也将如此


将null赋值给对象或System.gc()不会启动垃圾收集,它们只是表示垃圾收集的资格。终止进程会将整个java堆返回给系统。

当终止进程时,整个java堆将返回给系统;此时JVM不需要进行垃圾收集。

当进程被终止时,整个java堆将返回给系统;此时JVM不需要进行垃圾收集。

Java应用程序在JVM上运行,而JVM是另一个在OS上运行的应用程序。杀死一个应用程序意味着杀死JVM本身,之后操作系统将释放JVM占用的内存,换句话说是java应用程序。

java应用程序在JVM上运行,JVM是在操作系统上运行的另一个应用程序。杀死一个应用程序意味着杀死JVM本身,之后操作系统将释放JVM占用的内存,换句话说,是java应用程序。

操作系统负责回收内存。被杀死的进程不能运行任何东西,包括GC。操作系统负责回收内存。被杀死的进程不能运行任何东西,包括GC。如果他杀死应用程序,那么整个JVM都会关闭。我觉得Klas的答案更合适,因为您还可以突然终止应用程序,并且不会调用垃圾收集。。。因此,您的答案不是真正的全局性或充分性,同意,如果您杀死应用程序,则无需执行任何操作。如果他杀死应用程序,则整个JVM将关闭。我觉得Klas的答案更合适,因为您还可以突然终止应用程序,并且不会调用垃圾收集。。。因此,您的答案不是真正的全局性或充分性,同意,如果您终止应用程序,则无需执行任何操作。