jvm調(diào)優(yōu)總結(jié)(7):調(diào)優(yōu)方法-java開(kāi)發(fā)java經(jīng)驗(yàn)技巧

jvm調(diào)優(yōu)總結(jié)(7):調(diào)優(yōu)方法-java開(kāi)發(fā)java經(jīng)驗(yàn)技巧

ID:31316961

大?。?3.00 KB

頁(yè)數(shù):8頁(yè)

時(shí)間:2019-01-08

jvm調(diào)優(yōu)總結(jié)(7):調(diào)優(yōu)方法-java開(kāi)發(fā)java經(jīng)驗(yàn)技巧_第1頁(yè)
jvm調(diào)優(yōu)總結(jié)(7):調(diào)優(yōu)方法-java開(kāi)發(fā)java經(jīng)驗(yàn)技巧_第2頁(yè)
jvm調(diào)優(yōu)總結(jié)(7):調(diào)優(yōu)方法-java開(kāi)發(fā)java經(jīng)驗(yàn)技巧_第3頁(yè)
jvm調(diào)優(yōu)總結(jié)(7):調(diào)優(yōu)方法-java開(kāi)發(fā)java經(jīng)驗(yàn)技巧_第4頁(yè)
jvm調(diào)優(yōu)總結(jié)(7):調(diào)優(yōu)方法-java開(kāi)發(fā)java經(jīng)驗(yàn)技巧_第5頁(yè)
資源描述:

《jvm調(diào)優(yōu)總結(jié)(7):調(diào)優(yōu)方法-java開(kāi)發(fā)java經(jīng)驗(yàn)技巧》由會(huì)員上傳分享,免費(fèi)在線(xiàn)閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫(kù)。

1、JVM調(diào)優(yōu)總結(jié)(7):調(diào)優(yōu)方法-編程開(kāi)發(fā)技術(shù)JVM調(diào)優(yōu)總結(jié)(7):調(diào)優(yōu)方法原文出處:pengjiahengJVM調(diào)優(yōu)工具Jconsole,jProfile,VisualVMJconsole:?jdk自帶,功能簡(jiǎn)單,但是可以在系統(tǒng)有一定負(fù)荷的情況下使用。對(duì)垃圾回收算法有很詳細(xì)的跟蹤。詳細(xì)說(shuō)明參考這里JProfiler:商業(yè)軟件,需要付費(fèi)。功能強(qiáng)大。詳細(xì)說(shuō)明參考這里VisualVM:JDK自帶,功能強(qiáng)大,與JProfiler類(lèi)似。推薦。如何調(diào)優(yōu)觀(guān)察內(nèi)存釋放情況、集合類(lèi)檢查、對(duì)象樹(shù)上面這些調(diào)優(yōu)工具都提供了強(qiáng)大的

2、功能,但是總的來(lái)說(shuō)一般分為以下幾類(lèi)功能堆信息查看可查看堆空間大小分配(年輕代、年老代、持久代分配)捉供即時(shí)的垃圾凹收功能垃圾監(jiān)控(長(zhǎng)時(shí)間監(jiān)控回收情況)杳看堆內(nèi)類(lèi)、對(duì)象信息杳看:數(shù)量、類(lèi)型等對(duì)象引用情況查看?有了堆信息查看方面的功能,我們i般可以順利解決以下問(wèn)題:-年老代年輕代大小劃分是否合理-內(nèi)存泄漏-垃圾回收算法設(shè)置是否合理線(xiàn)程監(jiān)控線(xiàn)程信息監(jiān)控:系統(tǒng)線(xiàn)程數(shù)量。線(xiàn)程狀態(tài)監(jiān)控:各個(gè)線(xiàn)程都處在什么樣的狀態(tài)下Dump線(xiàn)程詳細(xì)信息:查看線(xiàn)程內(nèi)部運(yùn)行情況死鎖檢杳?熱點(diǎn)分析???CPU熱點(diǎn):檢查系統(tǒng)哪些方法山用的大量

3、CPU時(shí)間???內(nèi)存熱點(diǎn):檢查哪些對(duì)象在系統(tǒng)中數(shù)量最大(一定時(shí)間內(nèi)存活對(duì)象和銷(xiāo)毀對(duì)象一起統(tǒng)計(jì))這兩個(gè)東四對(duì)丁系統(tǒng)優(yōu)化很冇幫助。我們可以根據(jù)找到的熱點(diǎn),冇針對(duì)性的進(jìn)行系統(tǒng)的瓶頸查找和進(jìn)行系統(tǒng)優(yōu)化,而不是漫無(wú)目的的進(jìn)行所有代碼的優(yōu)化??煺湛煺帐窍到y(tǒng)運(yùn)行到某一時(shí)刻的一個(gè)定格。在我們進(jìn)行調(diào)優(yōu)的吋候,不可能用眼睛去跟蹤所有系統(tǒng)變化,依賴(lài)快照功能,我們就可以進(jìn)行系統(tǒng)兩個(gè)不同運(yùn)行時(shí)刻,對(duì)彖(或類(lèi)、線(xiàn)程等)的不同,以便快速找到問(wèn)題舉例說(shuō),我要檢查系統(tǒng)進(jìn)行垃圾冋收以后,是否還有該收冋的對(duì)象被遺漏下來(lái)的了。那么,我可以在進(jìn)行

4、垃圾冋收前后,分別進(jìn)行一次堆情況的快照,然后對(duì)比兩次快照的對(duì)象情況。內(nèi)存泄漏檢查內(nèi)存泄漏是比較常見(jiàn)的問(wèn)題,而月?解決方法也比較通用,這里可以重點(diǎn)說(shuō)一下,而線(xiàn)程、熱點(diǎn)方面的問(wèn)題則是具體問(wèn)題具體分析了。內(nèi)存泄漏一般可以理解為系統(tǒng)資源(各方面的資源,堆、棧、線(xiàn)程等)在錯(cuò)誤使用的情況下,導(dǎo)致使用完畢的資源無(wú)法回收(或沒(méi)有回收),從而導(dǎo)致新的資源分配請(qǐng)求無(wú)法完成,引起系統(tǒng)錯(cuò)誤。內(nèi)存泄漏對(duì)系統(tǒng)危害比較大,因?yàn)樗梢灾苯訉?dǎo)致系統(tǒng)的崩潰。需要區(qū)別一下,內(nèi)存泄漏和系統(tǒng)超負(fù)荷兩者是有區(qū)別的,雖然可能導(dǎo)致的最終結(jié)果是一樣的。內(nèi)

5、存泄漏是用完的資源沒(méi)有冋收引起錯(cuò)誤,而系統(tǒng)超負(fù)荷則是系統(tǒng)確實(shí)沒(méi)有那么多資源可以分配了(其他的資源都在使用)。年老代堆空間被占滿(mǎn)異常:?java.lang.0utOfMemoryError:Javaheapspace說(shuō)明:這是最典型的內(nèi)存泄漏方式,簡(jiǎn)單說(shuō)就是所有堆空間都被無(wú)法回收的垃圾對(duì)象占滿(mǎn),虛擬機(jī)無(wú)法再在分配新空間。如上圖所示,這是非常典型的內(nèi)存泄漏的垃圾回收情況圖。所冇峰值部分都是一次垃圾冋收點(diǎn),所有谷底部分表示是一次垃圾冋收后剩余的內(nèi)存。連接所有谷底的點(diǎn),可以發(fā)現(xiàn)一?條由底到高的線(xiàn),這說(shuō)明,隨時(shí)間的

6、推移,系統(tǒng)的堆空間被不斷占滿(mǎn),最終會(huì)占滿(mǎn)整個(gè)堆空間。因此可以初步認(rèn)為系統(tǒng)內(nèi)部可能有內(nèi)存泄漏。(上面的圖僅供示例,在實(shí)際情況下收集數(shù)據(jù)的時(shí)間需要更長(zhǎng),比如幾個(gè)小時(shí)或者幾天)解決:這種方式解決起來(lái)也比較容易,一般就是根據(jù)垃圾回收前后情況對(duì)比,同吋根據(jù)對(duì)象引用情況(常見(jiàn)的集合對(duì)象引用)分析,基本都可以找到泄漏點(diǎn)。持久代被占滿(mǎn)異常:java.lang.0utOfMemoryError:PermGenspace說(shuō)明:Perm空間被占滿(mǎn)。無(wú)法為新的class分配存儲(chǔ)空間而引發(fā)的異常。這個(gè)異常以前是沒(méi)有的,但是在Ja腹

7、反射大量使用的今天這個(gè)異常比較常見(jiàn)了。主要原因就是大量動(dòng)態(tài)反射生成的類(lèi)不斷被加載,最終導(dǎo)致Perm區(qū)被占滿(mǎn)。更可怕的是,不同的classLoader即便使用了相同的類(lèi),但是都會(huì)對(duì)英進(jìn)行加載,相當(dāng)于同一個(gè)東西,如果有N個(gè)classLoader那么他將會(huì)被加載N次。因此,某些情況下,這個(gè)問(wèn)題基木視為無(wú)解。當(dāng)然,存在大量classLoader和大量反射類(lèi)的情況其實(shí)也不多。解決:1.-XX:MaxPermSize=16m2.換用JDK。比如JRocketo堆棧溢出異常:java.lang.StackOvcrflo

8、wError說(shuō)明:這個(gè)就不多說(shuō)了,一般就是遞歸沒(méi)返回,或者循環(huán)調(diào)用造成線(xiàn)程堆棧滿(mǎn)異常:Fatal:Stacksizetoosmall說(shuō)明:java中一個(gè)線(xiàn)程的空間大小是有限制的。JDK5.0以后這個(gè)值是1M。與這個(gè)線(xiàn)程相關(guān)的數(shù)據(jù)將會(huì)保存在其中。但是當(dāng)線(xiàn)程空間滿(mǎn)了以后,將會(huì)出現(xiàn)上面異常。解決:增加線(xiàn)程棧大小。-Xss2m。但這個(gè)配置無(wú)法解決根本問(wèn)題,還??创a部分是否有造成泄漏的部分。系統(tǒng)內(nèi)存被占滿(mǎn)異常:java.lang.Ou

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫(huà)的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶(hù)上傳,版權(quán)歸屬用戶(hù),天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶(hù)請(qǐng)聯(lián)系客服處理。