最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2016年05月17日 09:39:31   作者:GameKing  
這篇文章主要介紹了從JVM角度對MyEclipse進行調試優(yōu)化,為大家分析調試優(yōu)化MyEclipse的步驟,感興趣的小伙伴們可以參考一下

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

啟動優(yōu)化:

首先來看下我的myeclipse.ini里面的默認啟動參數:

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

從啟動參數上看不出什么,于是往里面加入打印內存變化相關參數:

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

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

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

從GC頻率和信息可以看出內存的回收率很高,且大小在不斷調整,這應該是由于年輕代的空間不足導致,需要設定一個不小的初始值。

然后來重點關注FULL GC:

復制代碼 代碼如下:
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]

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

于是調整后的參數如下:

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

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

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

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

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

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

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

首先是堆內存的整體使用情況:

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

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

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

接下來是Tenured區(qū):

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

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

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

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

于是根據上面的分析將參數調整為:

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

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


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

總結

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

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

在這個參數設置下,myeclipse的響應速度比較有保證,各種延時卡頓的現象的出現頻率大大降低。缺點是常駐的占用的系統(tǒng)內存偏高,喜歡同時打開多個myeclipse的同學可根據自己的需要和實際情況進行適當的調整。

以上就是本文的全部內容,希望能夠對大家的學習有所幫助。

相關文章

  • Mybatis-plus多租戶項目實戰(zhàn)進階指南

    Mybatis-plus多租戶項目實戰(zhàn)進階指南

    多租戶是一種軟件架構技術,在多用戶的環(huán)境下共有同一套系統(tǒng),并且要注意數據之間的隔離性,下面這篇文章主要給大家介紹了關于Mybatis-plus多租戶項目實戰(zhàn)進階的相關資料,需要的朋友可以參考下
    2022-02-02
  • 使用Spring Cache和Redis實現查詢數據緩存

    使用Spring Cache和Redis實現查詢數據緩存

    在現代應用程序中,查詢緩存的使用已經變得越來越普遍,它不僅能夠顯著提高系統(tǒng)的性能,還能提升用戶體驗,在這篇文章中,我們將探討緩存的基本概念、重要性以及如何使用Spring Cache和Redis實現查詢數據緩存,需要的朋友可以參考下
    2024-07-07
  • Java 超詳細講解ThreadLocal類的使用

    Java 超詳細講解ThreadLocal類的使用

    寫SpringBoot項目的時候,經常用到的一個保存用戶信息的類就是Threadlocal,我們今天就來詳細介紹一下這個類,感興趣的朋友來看看吧
    2022-04-04
  • vue用CryptoJS加密,java用CryptoUtil解密

    vue用CryptoJS加密,java用CryptoUtil解密

    CryptoJS是一個JavaScript庫,提供了一系列密碼學函數和工具,用于加密、解密、生成摘要等任務,本文vue前端使用CryptoJS加密,java后端使用CryptoUtil解密
    2024-09-09
  • 使用Spring boot + jQuery上傳文件(kotlin)功能實例詳解

    使用Spring boot + jQuery上傳文件(kotlin)功能實例詳解

    本文通過實例代碼給大家介紹了使用Spring boot + jQuery上傳文件(kotlin) 功能,需要的朋友可以參考下
    2017-07-07
  • Java中ArrayList和LinkedList的遍歷與性能分析

    Java中ArrayList和LinkedList的遍歷與性能分析

    這篇文章主要給大家介紹了ArrayList和LinkedList這兩種list的五種循環(huán)遍歷方式,各種方式的性能測試對比,根據ArrayList和LinkedList的源碼實現分析性能結果,總結結論。相信對大家的理解和學習具有一定的參考價值,有需要的朋友們下面跟著小編一起來學習學習吧。
    2016-12-12
  • Java對象創(chuàng)建內存案例解析

    Java對象創(chuàng)建內存案例解析

    這篇文章主要介紹了Java對象創(chuàng)建內存案例解析,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-08-08
  • Java中為什么要實現Serializable序列化

    Java中為什么要實現Serializable序列化

    在Java編程中,Serializable序列化是一個常見的概念,它允許對象在網絡上傳輸或持久化到磁盤上,本文將深入探討為什么在Java中要實現Serializable序列化,并通過示例代碼來解釋其重要性
    2023-10-10
  • 教你如何用Jenkins自動化部署項目(從零到搭建完成)

    教你如何用Jenkins自動化部署項目(從零到搭建完成)

    這篇文章主要介紹了教你如何用Jenkins自動化部署項目(從零到搭建完成),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-10-10
  • Java中的日期時間處理及格式化處理

    Java中的日期時間處理及格式化處理

    這篇文章主要介紹了Java中的日期時間處理及格式化處理方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08

最新評論

清流县| 临汾市| 甘南县| 昭觉县| 曲水县| 温泉县| 宣汉县| 安吉县| 天门市| 天门市| 江北区| 陇西县| 舟山市| 页游| 安丘市| 偃师市| 阿荣旗| 竹溪县| 福州市| 辽宁省| 蓝田县| 玉田县| 松江区| 丰宁| 垫江县| 海伦市| 宜宾县| 阳曲县| 类乌齐县| 铜梁县| 东光县| 古田县| 屏山县| 黑山县| 广水市| 司法| 青川县| 商城县| 温州市| 建瓯市| 博野县|