Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.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
操作系统(linux)如何杀死java程序?当我硬终止一个java进程时,jvm会发生什么?_Java_Linux_Operating System - Fatal编程技术网

操作系统(linux)如何杀死java程序?当我硬终止一个java进程时,jvm会发生什么?

操作系统(linux)如何杀死java程序?当我硬终止一个java进程时,jvm会发生什么?,java,linux,operating-system,Java,Linux,Operating System,假设我通过发出kill-9pid命令来硬杀死一个java进程,jvm会停止还是会运行垃圾收集器并回收堆中的内存,然后停止执行 您正在杀死的进程是JVM进程,它正在运行您的Java代码。所以它根本没有机会做任何事情 当然,由于堆是分配给进程的内存,它会返回到系统的空闲内存池,但JVM不会返回,这是通过标准的Linux机制杀死进程。它会立即死亡,您所说的不会发生任何事情。即使调用system.exit它也不会正常运行垃圾收集器。在这种情况下,将调用关闭挂钩,但如果进程正在消失,则无需释放内存或操作系

假设我通过发出kill-9pid命令来硬杀死一个java进程,jvm会停止还是会运行垃圾收集器并回收堆中的内存,然后停止执行

您正在杀死的进程是JVM进程,它正在运行您的Java代码。所以它根本没有机会做任何事情


当然,由于堆是分配给进程的内存,它会返回到系统的空闲内存池,但JVM不会返回,这是通过标准的Linux机制杀死进程。

它会立即死亡,您所说的不会发生任何事情。即使调用
system.exit
它也不会正常运行垃圾收集器。在这种情况下,将调用关闭挂钩,但如果进程正在消失,则无需释放内存或操作系统资源。谢谢你的回答。是的,这与杀死任何进程一样。操作系统从所有正在运行的线程中删除执行,并释放所有已使用的资源、内存等。JVM及其可能正在运行的内容将不再存在。感谢T.J的回答