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.
在windows下的虛擬機中,安裝華爲電腦的deepin操作系統
2.
強烈推薦款下載不限速解析神器
3.
【區塊鏈技術】孫宇晨:區塊鏈技術帶來金融服務的信任變革
4.
搜索引起的鏈接分析-計算網頁的重要性
5.
TiDB x 微衆銀行 | 耗時降低 58%,分佈式架構助力實現普惠金融
6.
《數字孿生體技術白皮書》重磅發佈(附完整版下載)
7.
雙十一「避坑」指南:區塊鏈電子合同爲電商交易保駕護航!
8.
區塊鏈產業,怎樣「鏈」住未來?
9.
OpenglRipper使用教程
10.
springcloud請求一次好用一次不好用zuul Name or service not known
本站公眾號
歡迎關注本站公眾號,獲取更多信息
相關文章
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)
>>更多相關文章<<