日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
JVM的秘密花園

[[330708]]

創(chuàng)新互聯(lián)是一家專注于成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計與策劃設(shè)計,孟連網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十載,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:孟連等地區(qū)。孟連做網(wǎng)站價格咨詢:028-86922220

軟件運行或者程序開發(fā)中,有時候會需要寫一些臨時文件,那寫這些臨時文件的目錄在哪呢?不同的軟件,不同的語言,以及不同的操作系統(tǒng)都有所區(qū)別。在 Java 語言的世界里,因為是跨平臺的語言,而且每個人的設(shè)置并不相同,所以這對應(yīng)到具體當前系統(tǒng)的臨時文件在哪,可以通過在代碼里獲取環(huán)境變量。

System.getProperty("java.io.tmpdir") 來看。

這個目錄除了我們可以做為臨時目錄外,是不是我們不寫文件的時候就用不到了呢?

其實并不是。這個目錄相當于 JVM 的「秘密花園」,虛擬機會在這里記錄許多的信息。

例如每一個 java 的進程,都會在該臨時目錄下的 `hsperfdata_$USER(你自己的用戶名)`目錄生成一個進程ID對應(yīng)的文件。

可能有人遇到這種問題,Java 程序可以正常執(zhí)行,但是通過 jps 命令不能把進程給列出來。這種一般都是和 tmpdir 有關(guān),直接查看是否有對應(yīng)的寫權(quán)限,磁盤是否已滿。

以后你無論是執(zhí)行jps 命令,還是其他監(jiān)控診斷類的應(yīng)用需要 attach 到JVM 的時候,如果需要提供Java 進程列表,都會從這兒讀取。而且這個進程文件并不是個空文件,里面有大量的內(nèi)容。

所以我們常用的 jstat 以及我們以前文章中提到的JConsole、JVisualVM、SA 等工具,都會從這個文件這里讀內(nèi)容,再進行展示。

文件的內(nèi)容哪里來的呢?

這了支持對 JVM 的監(jiān)控,虛擬機里特地開辟了一塊內(nèi)存,用來存放這些性能統(tǒng)計相關(guān)的數(shù)據(jù),統(tǒng)稱為 PerfData,這也是前面目錄稱為 hsperfdata的原因。隨著 Java 進程的不斷運行,那些不斷變化的監(jiān)控值,虛擬機一般會通過共享內(nèi)存的方式將內(nèi)存與這個文件進行映射。并在數(shù)據(jù)變化的時候刷新到文件。

比如我們可以通過命令來查看加載類的信息,以及像gc 的一些數(shù)據(jù)

 
 
 
 
  1. jstat -class file:////hsperfdata/ 
  2. jstat -gc file:////hsperfdata/ 

還不過癮,可以試試這個命令,查看更多的監(jiān)控信息

 
 
 
 
  1. jstat -J-Djstat.showUnsupported=true -snap  pid 

選項默認是開啟的,對性能的影響基本可以忽略,如果想要關(guān)閉,可以通過-XX:-UsePerData 來操作,

這個JVM參數(shù)官方說明如下

-XX:+UsePerfData

  • Enables the perfdata feature. This option is enabled by default to allow JVM monitoring and performance testing. Disabling it suppresses the creation of the hsperfdata_userid directories. To disable the perfdata feature, specify -XX:-UsePerfData.

這個文件就是我們通過外部監(jiān)控工具 attach 到 JVM 的時候,讀到的那些內(nèi)容。

這個秘密空間,在 JVM 內(nèi)部是通過 PerfMemory 的模塊來統(tǒng)一管理的,負責創(chuàng)建、分配和銷毀。

正常情況下JVM 退出時會把該文件同步刪除,但如果異常kill 的情況,那文件會保留下來,一直留著。下次執(zhí)行哪怕一個簡單的 jps 等命令時,只要啟動了 java 進程,都會判斷下該目錄下文件對應(yīng)的進程是否存在,沒有就會刪除了。

本文轉(zhuǎn)載自微信公眾號「 Tomcat那些事兒」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系 Tomcat那些事兒公眾號。

 


網(wǎng)頁標題:JVM的秘密花園
網(wǎng)頁地址:http://www.5511xx.com/article/cdddieg.html