目录

理解停止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. 利用BP神经网络教计算机识别语音特征信号(代码部分SS)
  2. 用于数字成像的双三次插值技术​
  3. 最新28个很棒的 jQuery 教程
  4. (*长期更新)软考网络工程师学习笔记——Section 16 磁盘存储技术和网络规划设计
  5. Metasploit入门用法(主动攻击)
  6. 绝地求生信号枪只能在服务器吗,绝地求生信号枪怎么用?信号枪刷新点及用法详解...
  7. 邻接矩阵的深度优先遍历
  8. mysql 转型_MySQL的未来在哪?
  9. camera android 黑屏,Android Camera.startPreview()启动未报错,但SurfaceView无画面输出
  10. 想学习C语言,学习路线是什么?
  11. Android学习笔记(十一)——从意图返回结果
  12. CSDN博主排名更新,看看原来的前1000名博主现在的排名如何
  13. 深入浅出的mysql第三版和第二版的区别_深入浅出mysql和高性能mysql哪本好
  14. 【游戏开发】游戏开发书籍汇总
  15. 玩转 ESP32 + Arduino (二十二) SIM800L上传数据到阿里IOT(温湿度和LBS)(NTP对时)
  16. 搜狗微信添加搜索工具爬虫
  17. MySQL5.7 Group Replication (MGR)
  18. 【尚硅谷_数据结构与算法】一、数据结构与算法概述
  19. OneDrive免费5T云盘空间
  20. HDU 4699 对顶栈

热门文章

  1. 视频和图片合成软件,简单快速合成视频和图片
  2. python 双精度浮点_Python双精度浮点数运算并分行显示操作示例
  3. 学计算机有作业吗,有没有电脑高手,大学计算机专业的作业
  4. Mac M1 安装Maven
  5. Python机器学习入门笔记(1)—— Scikit-learn与特征工程
  6. Dragonfly 中 P2P 传输协议优化
  7. IDEA提示方法参数的快捷键
  8. 3d transform的(x、y、z)坐标空间及位置
  9. 计算机考研复试C语言常见面试题
  10. Win10中SAS软件安装失败的一些解决方法