繁体   English   中英

垃圾收集Java中的静态变量

[英]Garbage collecting static variables in Java

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

这是我的问题:

杀死进程后如何收集静态变量?

我是否需要将每个静态变量设置为null才能立即收回内存或JVM本身?

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

静态变量由Class对象引用,而Class对象由ClassLoaders引用-因此,当分类器变得易于收集时,您的静态变量将随之效仿。

将null分配给对象或System.gc()不会启动垃圾回收,它们只是发出垃圾回收资格的信号。 终止进程会将整个java堆返回给系统。

当一个进程被杀死时,整个java堆将返回到系统。 此时,JVM无需进行垃圾收集。

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

Java应用程序在JVM上运行,而JVM是在OS上运行的另一个应用程序。 杀死应用程序意味着杀死JVM本身,然后OS将释放JVM占用的内存,即Java应用程序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM