JavaShuo
栏目
标签
JVM 发生GC时的事件通知的机制
时间 2019-11-06
标签
jvm
发生
事件
通知
机制
栏目
Java
繁體版
原文
原文链接
若是您还在用Java 6的话,请赶忙升级到Java 7吧。
如下以Java 7为基准来讨论。
==============================================================
在Java 7里有两种办法来监听GC事件。
一种是比较传统的办法,从Java SE 5开始就可用。
用C或C++或其它native语言来实现一个JVMTI agent,注册监听里面的
GarbageCollectionFinish
事件便可。
JVMTI提供了GarbageCollectionStart和GarbageCollectionFinish事件,有须要的话前者也能够监听上。这两个事件都是在JVM处于GC暂停阶段之中发出的,此时不能执行任何Java代码。
能够经过JVMTI的
GetStackTrace
函数来获取当时某个指定的Java线程的栈,或者用
GetAllStackTraces
来获取全部Java线程的栈。
--------------------------------------------------------------
另外一种是用Java 7新推出的JMX API的GC notification。用Java代码注册一个NotificationListener来监听GC事件便可。这边的事件是在GC完成以后才发出的。能够配置超时时间,只在超过指定的时间时才发出事件。
具体用法可参考JavaDoc:
GarbageCollectionNotificationInfo
以及这个bug report里有具体注册GC notification的代码:
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7087969
我之前写过一个跟它的实现机制相关的笔记,有兴趣的话能够参考:
https://gist.github.com/rednaxelafx/1465445
。相关邮件讨论:
http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/2011-August/002352.html
一样用JMX,
ThreadMXBean.dumpAllThreads
能够获取全部Java线程的栈。
用JMX版虽然能够用Java代码写,挺方便,但它得到GC事件通知时JVM已经不在暂停阶段,全部Java线程都从新变成可运行的,因而此时获取的stack trace就不如JVMTI准确(至少从楼主的意图来看)。用JVMTI仍是用JMX就看楼主本身的取舍了。
相关文章
1.
JVM触发GC的条件和时机
2.
RCP开发,view事件通知机制
3.
JVM的GC机制初探
4.
JVM Minor GC 与 FullGC 的触发时机
5.
JAVA的事件通知机制
6.
JVM中GC机制的我的理解
7.
jvm的gc的分配担保机制
8.
JVM中也有并发GC,CMS机制
9.
JVM------GC的触发
10.
dubbo事件通知机制(1)
更多相关文章...
•
ARP协议的工作机制详解
-
TCP/IP教程
•
TiDB数据库的管理机制
-
NoSQL教程
•
漫谈MySQL的锁机制
•
Docker容器实战(六) - 容器的隔离与限制
相关标签/搜索
jvm+gc
生的
android的事件分发机制
突发事件
gc+io+jvm
等待/通知机制
当时的
通知
ASP的重生
Java
SQLite教程
网站主机教程
MyBatis教程
JVM
插件
开发工具
0
分享到微博
分享到微信
分享到QQ
每日一句
每一个你不满意的现在,都有一个你没有努力的曾经。
最新文章
1.
css 让chrome支持小于12px的文字
2.
集合的一点小总结
3.
ejb
4.
Selenium WebDriver API
5.
人工智能基础,我的看法
6.
Non-local Neural及Self-attention
7.
Hbuilder 打开iOS真机调试操作
8.
improved open set domain adaptation with backpropagation 学习笔记
9.
Chrome插件 GitHub-Chart Commits3D直方图视图
10.
CISCO ASAv 9.15 - 体验思科上一代防火墙
本站公众号
欢迎关注本站公众号,获取更多信息
相关文章
1.
JVM触发GC的条件和时机
2.
RCP开发,view事件通知机制
3.
JVM的GC机制初探
4.
JVM Minor GC 与 FullGC 的触发时机
5.
JAVA的事件通知机制
6.
JVM中GC机制的我的理解
7.
jvm的gc的分配担保机制
8.
JVM中也有并发GC,CMS机制
9.
JVM------GC的触发
10.
dubbo事件通知机制(1)
>>更多相关文章<<