2013第51周二eclipse启动优化
減少jvm內存回收引起的eclipse卡的問題
這個主要是jvm在client模式,進行內存回收時,會停下所有的其它工作,帶回收完畢才去執行其它任務,在這期間eclipse就卡住了。所以適當的增加jvm申請的內存大小來減少其回收的次數甚至不回收,就會是卡的現象有明顯改善。
主要通過以下的幾個jvm參數來設置堆內存的:
| -Xmx512m | 最大總堆內存,一般設置為物理內存的1/4 |
| -Xms512m | 初始總堆內存,一般將它設置的和最大堆內存一樣大,這樣就不需要根據當前堆使用情況而調整堆的大小了 |
| -Xmn192m | 年輕帶堆內存,sun官方推薦為整個堆的3/8 |
| 堆內存的組成 | 總堆內存 = 年輕帶堆內存 + 年老帶堆內存 + 持久帶堆內存 |
| 年輕帶堆內存 | 對象剛創建出來時放在這里 |
| 年老帶堆內存 | 對象在被真正會回收之前會先放在這里 |
| 持久帶堆內存 | class文件,元數據等放在這里 |
| -XX:PermSize=128m | 持久帶堆的初始大小 |
| -XX:MaxPermSize=128m | 持久帶堆的最大大小,eclipse默認為256m。如果要編譯jdk這種,一定要把這個設的很大,因為它的類太多了。 |
-XX:+DisableExplicitGC 禁用System.gc()的顯示內存回收
一般Xms、Xmx設置相同,PermSize、MaxPermSize設置相同,這樣可以避免伸縮堆大小帶來的性能損耗。
首先eclipse安裝根目錄下打開eclipse.ini,加上配置:
-XX:+PrintGCTimeStamps
-XX:+PrintGCDetails
目的是運行eclipse的時候可以打出詳細gc過程。
啟動eclipse,然后打開gc.log一看,哇塞啟動一次就做了幾十次GC,包括不少次Full GC,著手優化……
先解決Full GC的問題:
……3.159: [Full GC 3.159: [Tenured: 22716K->26133K(35780K), 0.1116536 secs] 38493K->26133K(51908K), [Perm : 20479K->20479K(20480K)], 0.1117614 secs] [Times: user=0.11 sys=0.00, real=0.11 secs]
3.706: [Full GC 3.706: [Tenured: 26133K->27935K(43556K), 0.1235449 secs] 40042K->27935K(63204K), [Perm : 24575K->24575K(24576K)], 0.1236474 secs] [Times: user=0.13 sys=0.00, real=0.13 secs]
……
如上GC日志可以看出,Full GC主要是針對Tenured、Perm區的GC,好那先調整Perm大小,指定充裕的持久代區域,eclipse.ini中加入:
-XX:MaxPermSize=128m
再次啟動看gc.log,Full GC沒有了,但是還有很多次普通GC,說明還是需要進一步優化。
eclipse的初始堆大小分配得很小,因此不利于年輕代堆大小的分配,如果設置的年輕代堆大小Xmn大于最小堆大小Xms,eclipse將無法啟動。
因此,將Xms調整為512m,重啟動后觀察GC大幅減少。
最后調整Xmn,年輕代堆大小,經過反復比較后,發現設置“-Xmn256m”效果最優。
優化后的GC日志:
5.422: [GC 5.422: [DefNew: 235968K->12433K(235968K), 0.0989335 secs] 236976K->39296K(498112K), 0.0990229 secs]
在接近6秒的啟動時間內,eclipse總共只做了2次普通GC回收,怎么樣效果明顯吧!
在eclipse啟動的時候,它總是會搜索讓其運行的jre,往往就是這個搜索過程讓eclipse啟動變慢了。(沒設置時,等2-3s出現進度條,設置后直接出現進度條)只要在eclipse.ini中加入-vm的參數就可以了
2.取消所有啟動時要激活的插件(在用時激活也一樣)和其它的相關的在啟動時執行的操作。
3.關閉自動更新
更多信息可參考:eclipse啟動優化:http://blog.csdn.net/tomato8524/article/details/7428793jvm啟動參數大全:http://www.blogjava.net/midstr/archive/2008/09/21/230265.html
jvm結構的一些知識(其中的堆的構成):http://hllvm.group.iteye.com/group/wiki/2905-JVM
jvm堆知識:http://ruijf.iteye.com/blog/1028455
eclipse啟動調優:http://www.iteye.com/topic/756538
eclipse自帶的help contents(搜索"Running Eclipse"可以找到啟動相關的配置)
總結
以上是生活随笔為你收集整理的2013第51周二eclipse启动优化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Windows Azure 数据安全(清
- 下一篇: JNI中参数的传递与操作