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

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

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
全面認(rèn)識(shí)JVM垃圾回收機(jī)制

這里向大家簡單介紹一下JVM垃圾回收的相關(guān)知識(shí),JVM使用的是分代垃圾回收的方式,可以將Java對象分為"年輕"對象和"年老"對象,JVM將內(nèi)存堆(Heap)分為兩個(gè)區(qū)域,一個(gè)是"年輕"區(qū),另一個(gè)是"老"區(qū),Java將這兩個(gè)區(qū)域分別稱作是"新生代"和"老生代"。

創(chuàng)新互聯(lián)自2013年起,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、外貿(mào)營銷網(wǎng)站建設(shè)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢想脫穎而出為使命,1280元友誼做網(wǎng)站,已為上家服務(wù),為友誼各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:028-86922220

JVM垃圾回收的相關(guān)知識(shí)

JVM使用的是分代垃圾回收的方式,主要是因?yàn)樵诔绦蜻\(yùn)行的時(shí)候會(huì)有如下特點(diǎn):

◆大多數(shù)對象在創(chuàng)建后很快就沒有對象使用它了。

◆大多數(shù)在一直被使用的對象很少再去引用新創(chuàng)建的對象。

因此就將Java對象分為"年輕"對象和"年老"對象,JVM將內(nèi)存堆(Heap)分為兩個(gè)區(qū)域,一個(gè)是"年輕"區(qū),另一個(gè)是"老"區(qū),Java將這兩個(gè)區(qū)域分別稱作是"新生代"和"老生代"。

"新生代"區(qū)域中,絕大多數(shù)新創(chuàng)建的對象都存放在這個(gè)區(qū)域里,此區(qū)域一般來說較小而且JVM垃圾回收頻率較高,同時(shí)因?yàn)?新生代"采用的算法和其存放的對象的特點(diǎn),使該區(qū)域JVM垃圾回收的效率也非常高。

而"老生代"區(qū)域中存放的是在"新生代"中生存了較長時(shí)間的對象,這些對象將被轉(zhuǎn)移到"老生代"區(qū)。這個(gè)區(qū)域一般要大一些而且增長的速度相對于"新生代"要慢一些,"老生代"JVM垃圾回收的執(zhí)行頻率也會(huì)低很多。

由于JVM在JVM垃圾回收處理時(shí)會(huì)消耗一定的系統(tǒng)資源,因此有時(shí)候通過JVM啟動(dòng)的時(shí)候添加相關(guān)參數(shù)來控制"新生代"區(qū)域的大小,來調(diào)整JVM垃圾回收處理的頻率非常有用。以便于我們更合理的利用系統(tǒng)資源。

"新生代"區(qū)域設(shè)置參數(shù)是"-Xmn",用這個(gè)參數(shù)可以制定"新生代"區(qū)域的大小。

我們來舉一個(gè)例子說明:

我們就用系統(tǒng)自帶的程序作為例子,在命令行上鍵入如下指令:

 
 
 
  1. CDC:\java\demo\jfc\SwingSet2[回車]C:\java\demo\jfc\SwingSet2> 
  2. java-jar-verbose:gc-Xmn4mXX:+PrintGCDetailsSwingSet2.jar[回車]  
  3.  
  4.  

 上面加入了一個(gè)新的參數(shù)"XX:+PrintGCDetails",這個(gè)參數(shù)能夠打印出GC的詳細(xì)信息。屏幕輸出如下(節(jié)選): 

 
 
 
  1. [GC[DefNew:3469K->84K(3712K),0.0007778secs]23035K-> 
  2. 19679K(28728K),0.0009191secs][GC[DefNew:3284K-> 
  3. 171K(3712K),0.0007283secs]22878K-> 
  4. 19766K(28728K),0.0008669secs][GC[DefNew:3476K->
  5. 260K(3712K),0.0008504secs]23071K-> 
  6. 19855K(28728K),0.0009862secs][GC[DefNew:3502K-> 
  7. 87K(3712K),0.0009267secs]23096K-> 
  8. 19682K(28728K),0.0010610secs]  

我們需要解釋一下輸出的詳細(xì)內(nèi)容的意思,拿第一行輸出來說:

"DefNew:3469K->84K(3712K),0.0007778secs"是指"新生代"的JVM垃圾回收情況,這里的意思是從占用3469K內(nèi)存空間變?yōu)?4K內(nèi)存空間,用時(shí)0.0007778秒。

"23035K->19679K(28728K),0.0009191secs"是指總體GC的回收情況,整體堆空間占用從23035K降低到19679K的水平,用時(shí)0.0009191秒。

那么,這時(shí)候我們在將"新生代"的內(nèi)存設(shè)為8M,并把堆的最大可控值設(shè)定為32M,再去執(zhí)行,鍵入如下指令:

 
 
 
  1. java-jar-verbose:gc-Xmn8m-Xmx32mXX:+PrintGCDetailsSwingSet2.jar[回車]  
  2.  

得到的結(jié)果如下(節(jié)選): 

 
 
 
  1. [GC[DefNew:6633K->6633K(7424K),0.0000684secs]
  2. [Tenured:18740K->18820K(24576K),0.0636505secs]25374K-> 
  3. 18820K(32000K),0.0639274secs][GC[DefNew:6646K-> 
  4. 6646K(7424K),0.0002581secs][Tenured:18820K-> 
  5. 18884K(24576K),0.0651957secs]25467K-> 
  6. 18884K(32000K),0.0658804secs][GC[DefNew:6611K-> 
  7. 6611K(7424K),0.0000668secs][Tenured:18884K-> 
  8. 18505K(24576K),0.0931406secs]25496K-> 
  9. 18505K(32000K),0.0934295secs]  

這個(gè)結(jié)果說明:

"[DefNew:6633K->6633K(7424K),0.0000684secs]"是指"新生代"的JVM垃圾回收情況,這里的意思是從占用6633K內(nèi)存空間變?yōu)?633K內(nèi)存空間,用時(shí)0.0000684秒。
"25374K->18820K(32000K),0.0639274secs"是指總體GC的回收情況,整體堆空間占用從25374K降低到18820K的水平,用時(shí)0.0639274秒。
"[Tenured:18740K->18820K(24576K),0.0636505secs]"是指"老生代"GC的回收情況,整體堆空間占用從18740K降低到18820K的水平,用時(shí)0.0009012秒。

通過這些參數(shù)的調(diào)整我們可以看到在處理垃圾收集問題時(shí),從JVM垃圾回收的頻率是時(shí)間方面的變化,我們可以根據(jù)不同程序的不同情況予以調(diào)整。

最后有必要提一下GC的相關(guān)參數(shù):

-XX:+PrintGCDetails顯示GC的詳細(xì)信息
-XX:+PrintGCApplicationConcurrentTime打印應(yīng)用執(zhí)行的時(shí)間
-XX:+PrintGCApplicationStoppedTime打印應(yīng)用被暫停的時(shí)間
注:":"后的"+"號表示開啟此選項(xiàng),如果是"-"號那么表示關(guān)閉此選項(xiàng)。


分享文章:全面認(rèn)識(shí)JVM垃圾回收機(jī)制
轉(zhuǎn)載源于:http://www.5511xx.com/article/ccecpei.html