【问题标题】:how operating system(linux) kills java program ? What happens to the jvm when I hard kill a java process?操作系统(linux)如何杀死java程序?当我硬杀死一个java进程时jvm会发生什么?
【发布时间】:2019-04-07 10:37:01
【问题描述】:

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

【问题讨论】:

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

标签: java linux operating-system


【解决方案1】:

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

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

【讨论】:

  • 感谢 T.J 的回答
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-09
  • 1970-01-01
  • 2012-11-22
  • 2016-01-30
  • 1970-01-01
  • 2017-01-23
  • 1970-01-01
相关资源
最近更新 更多