java內(nèi)存泄露定位與分析_第1頁
java內(nèi)存泄露定位與分析_第2頁
java內(nèi)存泄露定位與分析_第3頁
java內(nèi)存泄露定位與分析_第4頁
java內(nèi)存泄露定位與分析_第5頁
已閱讀5頁,還剩9頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

#是G當(dāng)前新生成的perm內(nèi)存占用量,PC是但前perm內(nèi)存占用量。其他的可以根據(jù)這個類推,0C是。ld內(nèi)純的占用量。jstat-gcutilpid統(tǒng)計gc信息統(tǒng)計。jstat-gcnewpid年輕代對象的信息。jstat-gcnewcapacitypid年輕代對象的信息及其占用量。jstat-gcoldpid。1代對象的信息。stat-gcoldcapacitypidold代對象的信息及其占用量。jstat-gcpermcapacitypidperm對象的信息及其占用量。jstat-classpid顯示加載class的數(shù)量,及所占空間等信息。jstat-compilerpid顯示VM實時編譯的數(shù)量等信息。stat-printcompilationpid當(dāng)前VM執(zhí)行的信息?!┬g(shù)語的中文解釋:S0C:年輕代中第一個survivor(幸存區(qū))的容量字節(jié))S1C:年輕代中第二個survivor(幸存區(qū))的容量字節(jié))SOU:年輕代中第一個survivor(幸存區(qū))目前已使用空間字節(jié))S1U:年輕代中第二個survivor(幸存區(qū))目前已使用空間字節(jié)):年輕代中Eden(伊甸園)的容量字節(jié)):年輕代中Eden(伊甸園)目前已使用空間字節(jié)):OCld代的容量字節(jié)):OULd代目前已使用空間字節(jié))::Perm(持久代)的容量字節(jié)):Plrm(持久代)目前已使用空間字節(jié))YGC:從應(yīng)用程序啟動到采樣時年輕代中g(shù)c次數(shù)YGCT:從應(yīng)用程序啟動到采樣時年輕代中g(shù)c所用時間(s)FGC:從應(yīng)用程序啟動到采樣時old代全gc)gc次數(shù)FGCT:從應(yīng)用程序啟動到采樣時old代(全gc)gc所用時間(s)GCT:從應(yīng)用程序啟動到采樣時gc用的總時間(s)NGCMN:年輕代(young)中初始化最小)的大小字節(jié))NGCMX:年輕代(young)的最大容量字節(jié))NGC:年輕代(young)中當(dāng)前的容量字節(jié))OGCMN:old代中初始化最?。┑拇笮∽止?jié))OGCMX:old代的最大容量字節(jié))OGC:old代當(dāng)前新生成的容量字節(jié))PGCMN:perm代中初始化最?。┑拇笮∽止?jié))PGCMX:perm代的最大容量字節(jié))PGC:perm代當(dāng)前新生成的容量字節(jié))SO:年輕代中第一個survivor(幸存區(qū))已使用的占當(dāng)前容量百分比S1:年輕代中第二個survivor(幸存區(qū))已使用的占當(dāng)前容量百分比E年輕代中Eden(伊甸園)已使用的占當(dāng)前容量百分比O:old代已使用的占當(dāng)前容量百分比P:perm代已使用的占當(dāng)前容量百分比S0CMX:年輕代中第一個survivo(幸存區(qū))的最大容量字節(jié))S1CMX:年輕代中第二個survivor(幸存區(qū))的最大容量字節(jié))ECMX:年輕代中Eden(伊甸園)的最大容量字節(jié))DSS:當(dāng)前需要survivor(幸存區(qū))的容量字節(jié))(Eden區(qū)已滿)TT:持有次數(shù)限制MTT:最大持有次數(shù)限制如果定位內(nèi)存泄漏問題我一般使用如下命令:Jstat-gcutill5469250070[root?platfor"]蘋jstitil15415&'250070SOSIE■0.pYGCYGCTFGC即匚丁GCT0.00o.ao100.00100.0099.526824.5406T4576.304580.9040.00o.ao100.00100.0099.516824.540677579.,3195S3.8600.00o.ao100.00100.0099.536824.5406T9SSI.0375S5.S370.00G.00100.00100.0099.52-6824.5406825S3.7805S8.3210.00o,ao100.00100.0099.51682:4.540685586.4346590.376[root@sssslogs]#jstat-gcutil154691000300S0S1EOPYGCYGCTFGCFGCTGCT0.001.4626.544.6130.14350.87200.0000.8720.001.4646.544.6130.14350.87200.0000.872

0.001.4647.044.6130.14350.87200.0000.8720.001.4665.194.6130.14350.87200.0000.8720.001.4667.544.6130.14350.87200.0000.8720.001.4687.544.6130.14350.87200.0000.8720.001.4688.034.6130.14350.87200.0000.8721.480.005.564.6230.14360.87400.0000.8741000代表多久間隔顯示一次,100代表顯示一次。一Heap上的Survivorspace0區(qū)已使用空間的百分比一Heap上的Survivorspace1區(qū)已使用空間的百分比E一Heap上的Edenspace區(qū)已使用空間的百分比O一Heap上的Oldspace區(qū)已使用空間的百分比P一Permspace區(qū)已使用空間的百分比YGC—從應(yīng)用程序啟動到采樣時發(fā)生YoungGC的次數(shù)YGCT-從應(yīng)用程序啟動到采樣時YoungGC所用的時間(單位秒)FGC—從應(yīng)用程序啟動到采樣時發(fā)生FullGC的次數(shù)FGCT-從應(yīng)用程序啟動到采樣時FullGC所用的時間(單位秒)GCT—從應(yīng)用程序啟動到采樣時用于垃圾回收的總時間(單位秒)如果有大量的FGC就要查詢是否有內(nèi)存泄漏的問題了,圖中的FGC數(shù)量就比較大,并且執(zhí)行時間較長,這樣就會導(dǎo)致系統(tǒng)的響應(yīng)時間較長,如果對jvm的內(nèi)存設(shè)置較大,那么執(zhí)行一次FGC的時間可能會更長。如果為了更好的證明FGC對服務(wù)器性能的影響,我們可以使用javavisualVM來查看一下:

□CFU使用情呪垃圾回收活動10M-cru使用惜況;wo.□%塩疑國收活動;o.c%□CFU使用情呪垃圾回收活動10M-cru使用惜況;wo.□%塩疑國收活動;o.c%EOft-下和:<?T^-3:05下字3:10T^3:15下鈾:囂T¥S:25從上圖可以發(fā)現(xiàn)執(zhí)行FGC的情況,下午3:10分之前是沒有FGC的,之后出現(xiàn)大量的FGC。上圖是jvm堆內(nèi)存的使用情況,下午3:10分之前的內(nèi)存回收還是比較合理,但是之后大量內(nèi)存無法回收,最后導(dǎo)致內(nèi)存越來越少,導(dǎo)致大量的fuMgc下面我們在看看大量fullGC對服務(wù)器性能的影響,下面是我用loadrunner對我們項目進(jìn)行從圖中可以發(fā)現(xiàn)有,在進(jìn)行fullGC后系統(tǒng)的相應(yīng)時間有了明顯的增加,點擊率和吞吐量也有了明顯的下降。所以java內(nèi)存泄漏對系統(tǒng)性能的影響是不可忽視的。3、定位內(nèi)存泄漏當(dāng)然通過上面幾種方法我們可以發(fā)現(xiàn)java的內(nèi)存泄漏問題,但是作為一名合格的高級工程師,肯定不甘心就把這樣的結(jié)論交給開發(fā),當(dāng)然這也的結(jié)論交給開發(fā),開發(fā)也很難定位問題,為了更好的提供自己在公司的地位,我們必須給開發(fā)工程師提供更深入的測試結(jié)論,下面就來認(rèn)識一下MemoryAnalyzer.exe。java內(nèi)存泄漏檢查工具利器。

首先我們必須對jvm的堆內(nèi)存進(jìn)行dump,只有拿到這個文件我們才能分析出jvm堆內(nèi)存中到底存了些什么內(nèi)容,到底在做什么?MemoryAnalyzer的用戶我在這里就不說明了,我的博客里也有說明,下面就展示我測試的成功圖:lata£51.3IEB其中深藍(lán)色的部分就為內(nèi)存泄漏的部分,java的堆內(nèi)存一共只有481.5M而內(nèi)存泄漏的部分獨自占有了336.2M所以本次的內(nèi)存泄漏很明顯,那么我就來看看那個方法導(dǎo)致的內(nèi)存泄漏:1lata£51.3IEB其中深藍(lán)色的部分就為內(nèi)存泄漏的部分,java的堆內(nèi)存一共只有481.5M而內(nèi)存泄漏的部分獨自占有了336.2M所以本次的內(nèi)存泄漏很明顯,那么我就來看看那個方法導(dǎo)致的內(nèi)存泄漏:1Uverv]evtomiriato^tirmN-uti>s:SKollcwHot^inad2=l><Eegex>_____7ajj¥cKecatilirLii.smsEjon.S1:12Q0xe055E628java.utilconcurrent.ConcnrrentHashflap@0xe0557250了TV」.i11.~1)嘗”0四Oj:e0556fc8java.ecurityMesserDig:est£Delegate@Oxe0557138arg.apache.a.1Dilina.utiL.LiEecyclcSuppcrtN0^^0557050java.be:ms.PropertyChaiLgeSuppDrt@0xe0551760java..LangString@0xe0557780Catalina□rg.ache.ji_ili.Idgging.DiretJTKL0OkcOSSGScOjava.Lang.Object@Oke0557750Total:?entritsorg.apaclie.loader.W?bappClasQ0xeC5576d0::.「匸一.::■2327256~56犯犯2416326■QlujTieric>342.093.356—342,092,68067.7S?3Z6—-―-CTooa3600.0034ea0.00%43o.oos40000%0.00ft16o.oox970,71212.0TW12.24%0.32%0.26%61,旳匕。創(chuàng)bG21,7761,292,976Parcent》呂:魚±1S-U.-DDorg.apiicJte9±ilina.loidtr.lili,Hb:ippClasELos.der@0xe2be3ad0□rg.zpringFram&worJc.Iaitie.factory,suppart.HafaultLieta.KLsctoryQQxa4£org.spriJigfi-amework.tenuis,factory,support.HefaxiltListableBeariFactory@0xe2c3283G8360從上圖我們可以發(fā)現(xiàn)紅線圈著的方法占

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論