一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務(wù)器之家 - 編程語言 - JAVA教程 - JVM角度調(diào)試優(yōu)化MyEclipse

JVM角度調(diào)試優(yōu)化MyEclipse

2020-04-30 09:38GameKing JAVA教程

這篇文章主要介紹了從JVM角度對MyEclipse進(jìn)行調(diào)試優(yōu)化,為大家分析調(diào)試優(yōu)化MyEclipse的步驟,感興趣的小伙伴們可以參考一下

在將工作電腦的操作系統(tǒng)更換為win7之后,我的MyEclipse的啟動速度和運行速率一直很不理想。特別是在同時修改調(diào)試多個頁面模板的時候,來回切換兩個文件總是會卡個十來秒。試過關(guān)掉各種插件和驗證也無濟(jì)于事。于是在大致的研究完JVM后,決定從JVM的角度來試著解決這個問題。

啟動優(yōu)化:

首先來看下我的myeclipse.ini里面的默認(rèn)啟動參數(shù):

-Xmx512m :設(shè)置堆內(nèi)存最大值為512M
-XX:MaxPermSize=256m :設(shè)置持久代最大值為256m
-XX:ReservedCodeCacheSize=64m :設(shè)置代碼占用的內(nèi)存大小為64m

從啟動參數(shù)上看不出什么,于是往里面加入打印內(nèi)存變化相關(guān)參數(shù):

-XX:+PrintGCTimeStamps : 打印每次GC的時間戳
-XX:+PrintGCDetails : 打印每次GC的詳細(xì)信息
-Xloggc:myEclipseGC.log :將GC的記錄輸出到文件
-verbose:gc : 輸出每次GC的相關(guān)情況

然后啟動MyEclipse,然后查看myEclipseGC.log里面的信息:

JVM角度調(diào)試優(yōu)化MyEclipse

啟動耗時大概在30秒左右,選擇性的截取一小部分日志,可以看到,在myeclipse啟動的前10秒內(nèi),JVM總共執(zhí)行了300多次的GC和9次的FULL GC。

從GC頻率和信息可以看出內(nèi)存的回收率很高,且大小在不斷調(diào)整,這應(yīng)該是由于年輕代的空間不足導(dǎo)致,需要設(shè)定一個不小的初始值。

然后來重點關(guān)注FULL GC:

 

復(fù)制代碼 代碼如下:
5.961: [Full GC 5.961: [Tenured: 34568K->34456K(49676K), 0.1397651 secs] 35336K->34456K(53452K), [Perm : 26623K->26458K(26624K)], 0.1398562 secs] [Times: user=0.14 sys=0.00, real=0.14 secs]
9.030: [Full GC 9.030: [Tenured: 53310K->52332K(64588K), 0.2034757 secs] 56020K->52332K(69516K), [Perm : 43007K->42996K(43008K)], 0.2036030 secs] [Times: user=0.20 sys=0.00, real=0.20 secs]

 

 

從兩次日志的對比中可以看到,F(xiàn)ULL GC主要是在回收Tenured和Perm這兩個區(qū)域,并且這兩個區(qū)域的大小都在不斷的調(diào)整中,所以決定先把它們的大小固定下來。

于是調(diào)整后的參數(shù)如下:

-Xms512m :設(shè)定堆的最小值為512m
-Xmn192m : 設(shè)定年輕代的大小為192m
-XX:PermSize=192m : 設(shè)定持久代的初始值為192m
-XX:MaxPermSize=192m
-XX:ReservedCodeCacheSize=64m
-XX:+PrintGCTimeStamps
-XX:+PrintGCDetails
-Xloggc:myEclipseGC.log
-verbose:gc

重新啟動一次MyEclipse,查看日志信息:

JVM角度調(diào)試優(yōu)化MyEclipse

啟動耗時12秒左右,從日志可以看出,在前10秒內(nèi)總共只進(jìn)行了5次GC,不涉及各區(qū)域大小的調(diào)整,這個結(jié)果還是可以接受的,因為工作時不怎么需要頻繁重啟。

工作響應(yīng)速度優(yōu)化:

接下來研究困擾了我很久的來回切換html文件時的經(jīng)常性延時和大卡問題,為了更直觀的研究JVM的內(nèi)存變化,決定借助jconsole這個java自帶的輔助工具。先把myeclipse.ini的參數(shù)還原,避免被第一階段的優(yōu)化干擾。

啟動myeclipse,啟動jconsole并接入myeclipse所在的JVM,穩(wěn)定后的整個堆的內(nèi)存圖如下:

JVM角度調(diào)試優(yōu)化MyEclipse

接下來試著打開幾個模板,然后觀察內(nèi)存的變化。

首先是堆內(nèi)存的整體使用情況:

JVM角度調(diào)試優(yōu)化MyEclipse

可以看到,在打開了幾個模板之后,堆內(nèi)存的使用從原先的100M以下突增至300M以上。使用量增加了三倍,但是還在我設(shè)置的512M范圍之內(nèi)。所以可以暫時不考慮繼續(xù)增加堆內(nèi)存,轉(zhuǎn)而考慮調(diào)整各區(qū)內(nèi)存大小比例問題。

于是觀察下各個區(qū)在這段時間的內(nèi)存使用情況,其中,Eden區(qū)如下:

JVM角度調(diào)試優(yōu)化MyEclipse

Eden區(qū)在這段時間的內(nèi)存使用率大增,且發(fā)生了多次GC。通過底下的監(jiān)控信息可以知道,eden區(qū)在默認(rèn)情況下只分配了31M的最大內(nèi)存,這顯然是不夠用的。稍微執(zhí)行點操作都會觸發(fā)eden區(qū)的GC,這應(yīng)該是模板打開切換發(fā)生延時卡頓的原因之一,需要調(diào)整。

接下來是Tenured區(qū):

JVM角度調(diào)試優(yōu)化MyEclipse

JVM默認(rèn)給這個區(qū)域分配的最大空間是470M。隨著內(nèi)存使用的變化,這個區(qū)域的實際大小一直在調(diào)整,每次區(qū)域大小的調(diào)整都會發(fā)生FULL GC,這應(yīng)該是經(jīng)常性大卡的原因之一。而新模板的打開是觸發(fā)這種調(diào)整的主要原因。從這個區(qū)域內(nèi)存的使用上來看,將這個區(qū)域的內(nèi)存空間維持并固定在450M左右,保持一定的冗余還是有必要的。

從這點來看,jvm的堆內(nèi)存還是有必要稍微擴(kuò)充下以維持一個較大的Tenured區(qū)和Eden區(qū)。

最后來看下perm區(qū):

JVM角度調(diào)試優(yōu)化MyEclipse

作為方法區(qū)的一部分,這個區(qū)域的內(nèi)存變化并不大,并且比較穩(wěn)定,本來不需要留太多的冗余。但是考慮到當(dāng)前打開的工程實際代碼量并不大,決定暫時維持在128M左右,日后慢慢調(diào)整。

于是根據(jù)上面的分析將參數(shù)調(diào)整為:

-Xmx768m
-Xms768m
-Xmn256m
-XX:PermSize=192m
-XX:MaxPermSize=192m
-XX:ReservedCodeCacheSize=64m

重啟myeclipse,接入Jconsole,同時打開三十來個模板做了下測試。在觀查各個區(qū)的內(nèi)存使用率時發(fā)現(xiàn)一個問題,在將年輕代調(diào)整為256M以后,由于Eden不再頻繁的發(fā)生GC,進(jìn)入 Tenured區(qū)的數(shù)據(jù)量明顯減少 ,Tenured區(qū)的內(nèi)存使用圖如下:

JVM角度調(diào)試優(yōu)化MyEclipse

如上圖,在特意打開很多模板的情況下,450M+的空間只使用了不到250M,空間利用率太低,需再做調(diào)整。

總結(jié)

 以上是我對自己的myeclipse進(jìn)行調(diào)優(yōu)的一些思路和實際調(diào)優(yōu)的過程,在實際使用中又根據(jù)自己的喜好進(jìn)行了一些調(diào)整定制,最終形成的myeclipse.ini的參數(shù)如下:

-vmargs
-Xmx512m
-Xms512m
-Xmn192m
-XX:PermSize=128m
-XX:MaxPermSize=128m
-XX:ReservedCodeCacheSize=64m

在這個參數(shù)設(shè)置下,myeclipse的響應(yīng)速度比較有保證,各種延時卡頓的現(xiàn)象的出現(xiàn)頻率大大降低。缺點是常駐的占用的系統(tǒng)內(nèi)存偏高,喜歡同時打開多個myeclipse的同學(xué)可根據(jù)自己的需要和實際情況進(jìn)行適當(dāng)?shù)恼{(diào)整。

以上就是本文的全部內(nèi)容,希望能夠?qū)Υ蠹业膶W(xué)習(xí)有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 无码一区国产欧美在线资源 | 香蕉tv亚洲专区在线观看 | a级片在线观看免费 | 国产成人精品一区二区仙踪林 | 天天操天天射天天爽 | 久久不射电影网 | 朝鲜女人性猛交 | 美女视频ww8888网网 | 十大看黄网站 | 国产欧美日韩综合 | 欧美1级 | 免费一区在线观看 | 百合女女师生play黄肉黄 | 国产成人精品高清不卡在线 | chinese老头和老太交hd | xxx黑人又大粗又长 xxxx性欧美极品另类 | 国产极品精频在线观看 | 四虎免费影院在线播放 | 久久re热在线视频精99 | 亚洲精品欧洲久久婷婷99 | 末代皇帝无删减版在线观看 | 欧美日韩一区二区三区在线观看 | 国产a一级毛片爽爽影院 | 日本免费三片在线观看 | 精品国产日韩亚洲一区在线 | 91赵邦贺| 欧美人做人爱a全程免费 | darkside动漫在线观看 | 波多野结衣久久国产精品 | 国产高清日韩 | 国产一级片在线 | 天堂成人在线视频 | 国产a一级 | 色欲麻豆国产福利精品 | 婷婷丁香色综合狠狠色 | 91香蕉视频网址 | 亚洲成年男人的天堂网 | 免费观看国产大片资源视频 | xxx86日本人| futa文| 日本厕所spy2wc |