目录

理解停止Java进程的本质

我们知道,Java程序的运行需要一个运行时环境,即:JVM,启动Java进程即启动了一个JVM。

因此,所谓停止Java进程,本质上就是关闭JVM。

那么,哪些情况会导致JVM关闭呢?

应该如何正确地停止Java进程

通常来讲,停止一个进程只需要杀死进程即可。

但是,在某些情况下可能需要在JVM关闭之前执行一些数据保存或者资源释放的工作,此时就不能直接强制杀死Java进程。

对于正常关闭或异常关闭的几种情况,JVM关闭前,都会调用已注册的关闭钩子,基于这种机制,我们可以将扫尾的工作放在关闭钩子中,进而使我们的应用程序安全的退出。而且,基于平台通用性的考虑,更推荐应用程序使用System.exit(0)这种方式退出JVM。

对于强制关闭的几种情况:系统关机,操作系统会通知JVM进程等待关闭,一旦等待超时,系统会强制中止JVM进程;而kill -9、Runtime.halt()、断电、系统crash这些方式会直接无商量中止JVM进程,JVM完全没有执行扫尾工作的机会。

综上所述:

除非非常确定不需要在Java进程退出之前执行收尾的工作,否则强烈不建议使用kill -9这种简单暴力的方式强制停止Java进程(

java 结束程序_如何优雅地停止Java进程相关推荐

  1. vmx进程已提前退出_如何优雅地停止Java进程

    目录 理解停止Java进程的本质 应该如何正确地停止Java进程如何注册关闭钩子使用关闭钩子的注意事项信号量机制 总结 理解停止Java进程的本质 我们知道,Java程序的运行需要一个运行时环境,即: ...

  2. 设计java application程序_下面哪些步骤是Java Application程序的建立及运行的步骤( )...

    [判断题]运用定量模型进行优化控制是提高管理科学性的要求. [多选题]下列有关数组的声明中,正确的是( ) [填空题]是一种特殊的方法,它是在对象被创建时初始化对象的成员的方法. [判断题]数量化.模 ...

  3. java面向对象程序_面向对象编程基础(java)

    面向对象编程基础 1.1 面向对象概述 在程序开发初期,大家使用的是结构化开发语言,也就是面向过程(opp),但随着市场需求剧增,软件的规模也越来越大,结构化语言的弊端也暴露出来. 开发周期无休止的拖 ...

  4. java俄罗斯方块程序_使用JAVA编写的俄罗斯方块程序, 具有非常全面的功能.

    Lastsong-Tetris 使用JAVA编写的俄罗斯方块程序, 具有非常全面的功能. 游戏基本规则: 1.打开游戏窗口后, 点击开始按钮进行游戏; 2.每消一行就会增加10分和1消行数,当分数累计 ...

  5. 如何优雅地停止Java进程

    目录 理解停止Java进程的本质 应该如何正确地停止Java进程 如何注册关闭钩子 使用关闭钩子的注意事项 信号量机制 总结 理解停止Java进程的本质 我们知道,Java程序的运行需要一个运行时环境 ...

  6. linux启动java jar文件_推荐:Linux启动Java程序jar包Shell脚本

    #!/bin/sh# 该脚本为Linux下启动java程序的脚本## author: luandy# date: 2021/1/15## 特别注意:# 该脚本使用系统kill命令来强制终止指定的jav ...

  7. java可用于开发两类程序_此内容适合初学者java基础知识 第一章

    (一)Java 可用来生成两类程序:应用程序(Application). 小应用程序( Applet ) . (二)Java 既是一种解释执行的语言,也是一种编译执行的语言 (三)Java技术体系 1 ...

  8. 易语言取java路径模块_易语言API模块制作进程取程序路径

    易语言API模块制作进程取程序路径,提高进程的PID获取程序的所在路径. 进程_取程序路径 1.CreateToolhelp32Snapshot 快照句柄 = CreateToolhelp32Snap ...

  9. 用uml设计java应用程序_用UML设计Java应用程序之需求分析

    本节向大家介绍一下如何用UML设计Java应用程序, 这里就以图书馆借阅和预定图书和杂志的应用程序为例向大家讲解,主要有需求分析和域分析等内容,相信本节的学习一定会让你对UML设计有新的理解. 用UM ...

最新文章

  1. docker oracle navicat_拥抱开源从零开始 Docker、Mysql amp; JPA
  2. Hackerrank - The Grid Search
  3. fetch获取解析json数据
  4. redis 集群讲解
  5. Wannafly模拟赛2
  6. 海洋工作室——网站建设专家:全数据库比较工具
  7. linux编译生成动态库、静态库,以及使用
  8. vs2015调试iisexpress无法启动的问题解决方案整理
  9. MES管理端介绍,ebr二次开发产品—SIMATIC IT EBR(Opcenter Execution Pharma)
  10. 《社交网络》中Facemash算法分析
  11. 汽水分离再热器的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  12. ssh-keygen认证密钥
  13. Varscan2 Call snp_indel
  14. Cesi运行报错AttributeError: can‘t set attribute
  15. wstmart商城系统研究日志一
  16. TS中限制某种类型的传递
  17. 手把手教你Linux内核编译(三天吐血经历)
  18. 22计算机考研上岸个人经验近万字分享(11408初试360分)
  19. AcWing 1028. 复制书稿 (二分)
  20. 画出计算机系统构成的树状图,如何绘制树状层次结构的树状思维导图?

热门文章

  1. Vite-babysitter 像月嫂?保姆?照顾孩子一般为你讲解Vite源码。
  2. GitLab CI/CD .gitlab-ci.yaml 关键词(三):制品artifacts,缓存cache
  3. C#Mysql学生信息管理系统
  4. php mail 垃圾邮件,如何避免我的邮件从PHP邮件()被标记为垃圾邮件? - 程序园
  5. BP神经网络原理及Matlab实现(Back Propagation Neural Networks,BPNN)
  6. K8S集群中Pod资源处于Terminating或Unknown状态排查思路
  7. pdf 电子签章 java_在pdf上加盖电子签章
  8. 2016-HitCon-Pwn-house_of_orange学习(附赠FSOP基础知识)
  9. 对称加密与非对称加密的区别
  10. Java对字母移动三位加密_4动手动脑,总结及凯撒加密