- 浏览: 1255553 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (399)
- 心情故事 (12)
- java (115)
- linux (55)
- 关系型数据库 (35)
- struts,jsf,spring (11)
- jdbc,hibernate,ibatis (11)
- jsp,jstl,c:tag,标签库 (2)
- ejb,webservice (1)
- tomcat,jboss,jetty,weblogic,websphere (15)
- java网络编程 (6)
- java线程 (0)
- js,jquery,json,xml,dom,html.regex (25)
- 设计模式 (6)
- BUG记录 (2)
- ant (2)
- jsp,servlet (4)
- swing (6)
- lucene+nutch (6)
- log4j (2)
- windows doc (2)
- ruby (1)
- ruby on rails (3)
- 操作系统网络 (18)
- apache 错误 (1)
- tomcat (10)
- jboss (9)
- jetty (9)
- weblogic (9)
- websphere (10)
- apache (2)
- AIX的iostat命令查看系统磁盘的使用情况 (1)
- oracle 统计一个表格有多少列 (1)
- Exception in thread "main" java.security.KeyStoreException: Windows-MY not found (1)
- jsp (1)
- jstl (1)
- c:tag (1)
- 标签库 (1)
- struts (1)
- jsf (1)
- spring (2)
- oracle,sqlplus (2)
- sqlplus (2)
- show errors (1)
- proc (1)
- function (1)
- ORA-06544: PL/SQL: internal error (1)
- arguments: [55916] (1)
- [] (7)
- 终端身份实施文档 (1)
- 重装系统之后飞鸽传书只能看到自己 (1)
- vsftp "上传 553 Could not create file" (1)
- startWebLogic.sh启动失败,提示Error initializing Embedded LDAP Server (1)
- java agent 注册为 windows 服务 (1)
- centos (1)
- svn (1)
- apr (1)
- apr-util (1)
- activemq (2)
- oracle (5)
- mysql (3)
- nosql (3)
- NSIS (1)
- windows wmic (1)
- c 指针 (1)
- c c++ (0)
- jmeter (0)
- 性能测试 (0)
- linux,备份 (2)
- C++ ,Virtual (1)
- windows dos (1)
- android (2)
- 大数据,云计算 (1)
- JVM垃圾收集 (1)
- jdbc (2)
- invoke (1)
- hibernate (1)
- ibatis (1)
- 个人开源项目源码收藏 (1)
- 批处理 (1)
- Mongodb mapreduce (8)
- kettle (1)
- Mongodb capped (1)
- mongodb gridfs (1)
- Mongodb 入门基础知识 (1)
- mongodb (8)
- hadoop2.5.1 (1)
- hadoop (4)
- eclipse (1)
- hdfs fs (1)
- elipse hadoop plugin (1)
- PHP相关知识 (1)
- js (1)
- jquery (1)
- json (1)
- xml (1)
- dom (1)
- html.regex (1)
- 网络知识 (1)
- nginx (1)
- docker (1)
- 测试 (1)
- nodejs (1)
- iptables (1)
- linux gitlab (1)
最新评论
-
July01:
最近了解到一款StratoIO打印控件,功能如下:1、Html ...
web页面调用window.print()函数实现打印的功能 -
hxdtech:
非常感谢!
我在学习ibatis时的培训ppt -
zmwxiaoming:
what 能连数据库不错
SOLR的学习整理 -
springdata_springmvc:
java程序语言学习教程 地址http://www.zuida ...
java获取当前操作系统的信息 -
huanzei:
整理的不错,
oracle lpad函数
java.lang.Runtim类提供了addShutdownHook(Thread hook)方法,用来添加虚拟机关闭的钩子。
用途
1应用程序正常退出,在退出时执行特定的业务逻辑
2虚拟机非正常退出,比如用户按下ctrl+c,操作系统关闭等。在退出时执行必要的挽救措施。
实例:
public class TestOnExit {
public TestOnExit(){
doShutDownWork();
}
private void doShutDownWork(){
Runtime.getRuntime().addShutdownHook(new Thread(){
public void run(){
System.out.println("application will exit ....");
}
});
}
public static void main(String[] args) {
TestOnExit exit=new TestOnExit();
long beginTime=System.currentTimeMillis();
for(int i=0;i<10;i++){
try {
System.out.println("application run the "+i+"ci");
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
long endTime=System.currentTimeMillis();
System.out.println("it speat time ..is "+(endTime-beginTime));
}
}
可以做个测试,首先正常运行
执行ctrl+c
然后再试试kill -9 ,
但是遇到kill -9 命令就不行了,所以这个东西还是不很稳定。可用性不高!
kill -9 命令直接就把窗口关掉了,很暴力
,
我又试了下kill -15 这个,发现是可以的。截个图上来。
然后看运行的结果
是执行了钩子函数的
评论
对,直接断电就不行
kill还有别的一些参数,kill -非9 应该能用到 哈哈
试了下kill -15 这个是可以的,你说的对。
kill还有别的一些参数,kill -非9 应该能用到 哈哈
停电肯定是不可能执行的了,关机这个我还没测试过的!呵呵,感觉这个东西并非到处都适用!
至于正常关机这种情况我今天测试一下看看!
The Java virtual machine shuts down in response to two kinds of events:
The program exits normally, when the last non-daemon thread exits or when the exit (equivalently, System.exit) method is invoked, or
The virtual machine is terminated in response to a user interrupt, such as typing ^C, or a system-wide event, such as user logoff or system shutdown.
这两句话已经说明了情况了,我觉得非常明确了。
其实我上面说的关机,是按住电源键不放,基本上跟停电一样。。。
停电肯定是不可能执行的了,关机这个我还没测试过的!呵呵,感觉这个东西并非到处都适用!
至于正常关机这种情况我今天测试一下看看!
发表评论
-
centos6.5 hadoop伪分布式搭建
2017-01-10 10:41 25打算整理下machine learn ,再次安装 ... -
springboot
2016-12-29 11:13 2395微服务,现在是一个越来越热的东西,软件架构发展到 ... -
elk安装记录
2016-12-27 18:04 987在centos6.5上安装elk,记录下安装过程和 ... -
dubbo服务框架
2016-12-23 15:40 487上一篇文章介绍了zookeeper,作为服务 ... -
zookeeper服务注册中心配置
2016-12-22 11:40 1668用zookeeper有一段时间了,把配置做下简 ... -
OS X 安装java开发环境
2016-12-03 23:29 602... -
关于Restful API 的设计
2015-06-12 13:32 2282Restful API的流行,很大程度上被当前的移动 ... -
Jvisualvm远程连接tomcat配置:
2015-05-12 16:16 789JvisualVm 监控远程Tomcat,需要在To ... -
jdbc mybatis hibernate springJDBC的一些理解
2015-01-15 17:10 7073... -
Java 的ExecutorService
2015-01-15 11:45 1233早期在Java5以前,我们做多线程程序,一般都 ... -
spring的IOC和AOP
2015-01-14 16:47 2358关于Spring,大家都是耳熟 ... -
java 的线程安全
2014-12-30 14:43 981现代CPU基本都是多核,支持 ... -
JVM ClassLoader
2014-12-25 16:33 949JVM在加载类的时候,都是通过ClassLoad ... -
minor Gc ,Full Gc
2014-12-24 17:22 2108在发生Minor gc之前,虚拟机会先检查老年带最 ... -
Java的主要垃圾回收器
2014-12-24 16:33 1313对象 ... -
JVM的内存结构的一点理解
2014-12-24 11:30 785... -
利用生产者消费者模式实现串行的任务并行化
2014-12-22 17:48 1240试想,一个省有100个处理节点需要 ... -
利用生产者消费者模式实现串行的任务并行化
2014-12-22 17:48 0试想,一个省有100个处理节点需要 ... -
关于Linux的Ulimit参数
2014-12-22 12:13 1287JVM 64位平台与32位平台 ... -
一种表格数据比对的方法
2014-12-19 16:59 1060假设有连个库,一个是生产库,一个是备份库,在一个特 ...
相关推荐
JAVA虚拟机关闭钩子(Shutdown Hook).docx
介绍 此项目是利用业余时间,对一些技术知识点进行整理,用来记录个人学习笔记。这个项目和 项目的不同在于 是用来动手实践,对于一些技术的实际搭建和造轮子的项目,正...Java虚拟机关闭钩子(Shutdown hook) 公众号
Java虚拟机(JVM)在接收到退出指令时,会尝试执行所有注册的关闭钩子,这些钩子通常是实现`Runnable`接口的线程对象。 **关闭钩子的生成步骤**: 1. 创建一个继承自`Thread`的子类。 2. 在子类中实现`run`方法,...
在这个过程中,理解JVM(Java虚拟机)的角色至关重要,因为它是对象生命周期的主要管理者。 首先,让我们了解一下JVM的结构。JVM是Java虚拟机的缩写,它的主要任务是执行符合Java字节码规范的.class文件。JRE(Java...
- 当需要终止Java虚拟机(JVM)时,应使用`java.lang.System.exit(int status)`方法。这不仅能正确关闭JVM,还能确保资源被释放。 - 注意不要在多线程环境中随意调用`System.exit()`,因为这可能会导致某些线程没有...
- `freeMemory()`: 返回当前Java虚拟机中的可用内存。 - `totalMemory()`: 返回Java虚拟机总内存。 - `maxMemory()`: 返回Java虚拟机可以使用的最大内存。 3. **系统退出**: - `exit(int status)`: 强制终止...
1. `totalMemory()`: 这个方法返回Java虚拟机当前分配的总的内存大小。这包括堆内存以及JVM用于自身操作的内存。 2. `freeMemory()`: 它返回当前可用的内存量,即当前未被对象占用的堆内存大小。 3. `gc()`: 这是...
Java面试宝典是一份集合了2013年及以前的Java面试重点和常见问题的资源,对于准备Java程序员的面试具有很高的参考价值。这份资料不仅涵盖了基础题,还包含了不同企业的面试题目,旨在帮助求职者全面了解和掌握Java...
最后,为了确保在Java虚拟机关闭的时候能够释放资源并关闭WatchService,应该在程序中增加一个关闭钩子(shutdown hook),确保在JVM关闭的时候能够执行资源释放的相关操作,特别是关闭WatchService。 下面是一个...
`exit(int status)`方法用于终止当前正在运行的Java虚拟机(JVM)。这是一个非常强大的方法,因为它可以直接导致程序立即停止运行,并返回给操作系统指定的状态码。 ##### 方法细节: 1. **安全性检查**:首先进行...
2. **信号的选择**:`kill -3`发送SIGNAL 3(SIGQUIT),这会触发Java虚拟机打印当前的线程堆栈信息,这对于调试很有帮助。而`kill -9`则是强制结束进程,不会执行任何清理操作。 3. **后台运行应用**:使用`nohup`...
例如,Java虚拟机(JVM)中的垃圾回收线程就是一个典型的后台线程,它负责内存的自动清理工作,不直接影响程序的执行流程。 创建后台线程的条件有以下两点: 1. 必须在启动线程之前通过调用`setDaemon(true)`方法...
- **垃圾回收前的钩子:** 当Java虚拟机(JVM)准备回收一个对象时,如果该对象实现了 `Object` 类中的 `finalize()` 方法,那么这个方法将在对象被销毁之前被调用一次。 - **资源释放:** `finalize()` 方法主要...
- 在Java中,`System.exit(int status)`方法用于终止当前正在运行的Java虚拟机(JVM)。这是最直接的关闭应用的方式,但并不推荐在复杂的服务器环境或需要资源清理的情况下使用,因为它不提供任何清理机会。 3. **...
│ 高并发编程第一阶段09讲、多线程与JVM内存结构的关系,虚拟机栈实验.mp4 │ 高并发编程第一阶段10讲、Thread构造函数StackSize详细讲解.mp4 │ 高并发编程第一阶段11讲、Thread构造函数StackSize详细讲解-续....
│ 高并发编程第一阶段09讲、多线程与JVM内存结构的关系,虚拟机栈实验.mp4 │ 高并发编程第一阶段10讲、Thread构造函数StackSize详细讲解.mp4 │ 高并发编程第一阶段11讲、Thread构造函数StackSize详细讲解-续....
- **停止**:`vagrantHalt`任务安全地关闭Vagrant虚拟机。 - **销毁**:`vagrantDestroy`任务彻底销毁Vagrant虚拟机及其所有数据。 - **配置**:可以自定义Vagrant命令和参数。 - **同步**:支持与Vagrant的同步目录...
在Java编程中,`Runtime`类的`shutdownHook`是一个重要的特性,它允许开发者在Java虚拟机(JVM)即将关闭时执行清理任务。本文将深入解析`shutdown hook`的使用,以及它在不同场景下的应用。 首先,`shutdown hook`...
严格模式包含两个主要策略:ThreadPolicy(线程策略)和VmPolicy(虚拟机策略)。 1. **ThreadPolicy**: - 耗时调用检测:通过`detectCustomSlowCalls()`可以检测自定义的长时间运行的方法。 - 磁盘读取检测:`...