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.
Appium入門
2.
Spring WebFlux 源碼分析(2)-Netty 服務器啓動服務流程 --TBD
3.
wxpython入門第六步(高級組件)
4.
CentOS7.5安裝SVN和可視化管理工具iF.SVNAdmin
5.
jedis 3.0.1中JedisPoolConfig對象缺少setMaxIdle、setMaxWaitMillis等方法,問題記錄
6.
一步一圖一代碼,一定要讓你真正徹底明白紅黑樹
7.
2018-04-12—(重點)源碼角度分析Handler運行原理
8.
Spring AOP源碼詳細解析
9.
Spring Cloud(1)
10.
python簡單爬去油價信息發送到公衆號
本站公眾號
歡迎關注本站公眾號,獲取更多信息
相關文章
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)
>>更多相關文章<<