列宿乃施于上榮兮 日月才經(jīng)于柍桭

          ………… 白駒過隙 歲月如斯 夢縈回繞 心靈之聲
          posts - 57, comments - 8, trackbacks - 0, articles - 41
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          小試Eclipse性能調(diào)優(yōu)

          Posted on 2010-07-25 17:43 默認(rèn)為零 閱讀(707) 評論(0)  編輯  收藏 所屬分類: 技術(shù)

          首先了解下JVM中幾個相關(guān)的概念:
          Xms:最小堆大小
          Xmx:最大堆大小
          Xmn:年輕代堆大小
          Xss:每個線程的堆大小
          PermSize:初始持久代大小
          MaxPermSize:最大持久代大小

          一般Xms、Xmx設(shè)置相同,PermSize、MaxPermSize設(shè)置相同,這樣可以避免伸縮堆大小帶來的性能損耗。

          首先eclipse安裝根目錄下打開eclipse.ini,加上配置:

          -Xloggc:gc.log
          -XX:+PrintGCTimeStamps
          -XX:+PrintGCDetails

          目的是運(yùn)行eclipse的時候可以打出詳細(xì)gc過程。

          啟動eclipse,然后打開gc.log一看,哇塞啟動一次就做了幾十次GC,包括不少次Full GC,著手優(yōu)化……

          先解決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日志可以看出,F(xiàn)ull GC主要是針對Tenured、Perm區(qū)的GC,好那先調(diào)整Perm大小,指定充裕的持久代區(qū)域,eclipse.ini中加入:

          -XX:PermSize=128m
          -XX:MaxPermSize=128m

          再次啟動看gc.log,F(xiàn)ull GC沒有了,但是還有很多次普通GC,說明還是需要進(jìn)一步優(yōu)化。
          eclipse的初始堆大小分配得很小,因此不利于年輕代堆大小的分配,如果設(shè)置的年輕代堆大小Xmn大于最小堆大小Xms,eclipse將無法啟動。
          因此,將Xms調(diào)整為512m,重啟動后觀察GC大幅減少。
          最后調(diào)整Xmn,年輕代堆大小,經(jīng)過反復(fù)比較后,發(fā)現(xiàn)設(shè)置“-Xmn256m”效果最優(yōu)。

          優(yōu)化后的GC日志:

          3.203: [GC 3.204: [DefNew: 209776K->26176K(235968K), 0.0876304 secs] 209776K->27184K(498112K), 0.0876921 secs] [Times: user=0.09 sys=0.00, real=0.09 secs]
          5.422: [GC 5.422: [DefNew: 235968K->12433K(235968K), 0.0989335 secs] 236976K->39296K(498112K), 0.0990229 secs]

          在接近6秒的啟動時間內(nèi),eclipse總共只做了2次普通GC回收,怎么樣效果明顯吧!

          主站蜘蛛池模板: 武汉市| 纳雍县| 师宗县| 南雄市| 秦皇岛市| 石城县| 肥城市| 济阳县| 伊川县| 淮南市| 前郭尔| 疏附县| 丹棱县| 海林市| 大方县| 太康县| 阳高县| 新蔡县| 邯郸市| 卢氏县| 洪洞县| 灵山县| 普洱| 黄浦区| 齐河县| 广安市| 镇原县| 商都县| 灌云县| 永州市| 仁布县| 金昌市| 香格里拉县| 怀宁县| 双辽市| 伊通| 晋宁县| 武冈市| 福州市| 湛江市| 景德镇市|