Java教程學習入門影片原始碼課件:JVM調優講解
JVM是最好的軟體工程之一,它為Java提供了堅實的基礎,許多流行語言如Kotlin、Scala、Clojure、Groovy都使用JVM作為執行基礎。一個專業的Java工程師必須要了解並掌握JVM,接下來千鋒給大家分享Java基礎知識中JVM調優相關知識點。
JVM常見的調優引數包括:
-Xmx:指定java程式的最大堆記憶體, 使用java -Xmx5000M -version判斷當前系統能分配的最大堆記憶體;
-Xms:指定最小堆記憶體, 通常設定成跟最大堆記憶體一樣,減少GC;
-Xmn:設定年輕代大小。整個堆大小=年輕代大小+年老代大小。所以增大年輕代後,將會減小年老代大小。此值對系統效能影響較大,Sun官方推薦配置為整個堆的3/8;
-Xss:指定執行緒的最大棧空間, 此引數決定了java函式呼叫的深度, 值越大呼叫深度越深, 若值太小則容易出棧溢位錯誤(StackOverflowError);
-XX:PermSize:指定方法區(永久區)的初始值,預設是實體記憶體的1/64,在Java8永久區移除, 代之的是後設資料區,由-XX:MetaspaceSize指定;
-XX:MaxPermSize:指定方法區的最大值, 預設是實體記憶體的1/4,在java8中由-XX:MaxMetaspaceSize指定後設資料區的大小;
-XX:NewRatio=n:年老代與年輕代的比值,-XX:NewRatio=2, 表示年老代與年輕代的比值為2:1;
-XX:SurvivorRatio=n:Eden區與Survivor區的大小比值,-XX:SurvivorRatio=8表示Eden區與Survivor區的大小比值是8:1:1,因為Survivor區有兩個(from, to)。
JVM實質上分為三大塊,年輕代(YoungGen),年老代(Old Memory),及持久代(Perm,在Java8中被取消)。
年輕代大小選擇
響應時間優先的應用:儘可能設大,直到接近系統的最低響應時間限制(根據實際情況選擇)。在此種情況下,年輕代收集發生的頻率也是最小的。同時,減少到達年老代的物件。
吞吐量優先的應用:儘可能的設定大,可能到達Gbit的程度。因為對響應時間沒有要求,垃圾收集可以並行進行,一般適合8CPU以上的應用。
年老代大小選擇
響應時間優先的應用:年老代使用併發收集器,所以其大小需要小心設定,一般要考慮併發會話率和會話持續時間等一些引數。如果堆設定小了,可以會造成記憶體碎片、高回收頻率以及應用暫停而使用傳統的標記清除方式;如果堆大了,則需要較長的收集時間。最最佳化的方案,一般需要參考以下資料獲得:併發垃圾收集資訊、持久代併發收集次數、傳統GC資訊、花在年輕代和年老代回收上的時間比例。
減少年輕代和年老代花費的時間,一般會提高應用的效率。
吞吐量優先的應用:一般吞吐量優先的應用都有一個很大的年輕代和一個較小的年老代。原因是,這樣可以儘可能回收掉大部分短期物件,減少中期的物件,而年老代盡存放長期存活物件。
較小堆引起的碎片問題
因為年老代的併發收集器使用標記、清除演算法,所以不會對堆進行壓縮。當收集器回收時,他會把相鄰的空間進行合併,這樣可以分配給較大的物件。但是,當堆空間較小時,執行一段時間以後,就會出現“碎片”,如果併發收集器找不到足夠的空間,那麼併發收集器將會停止,然後使用傳統的標記、清除方式進行回收。如果出現“碎片”,可能需要進行如下配置:
-XX:+UseCMSCompactAtFullCollection:使用併發收集器時,開啟對年老代的壓縮。
-XX:CMSFullGCsBeforeCompaction=0:上面配置開啟的情況下,這裡設定多少次Full GC後,對年老代進行壓縮。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69916964/viewspace-2677828/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 雲端計算教程學習入門影片課件:Load Balance講解
- Java教程學習入門影片原始碼課件:為什麼企業看重Spring框架?Java原始碼Spring框架
- 雲端計算教程學習入門影片課件:伺服器叢集cluster講解伺服器
- 雲端計算教程學習入門影片課件:開源作業系統講解作業系統
- 雲端計算教程學習入門影片原始碼課件:CURL命令使用指南原始碼
- 雲端計算教程學習入門影片課件:伺服器虛擬化元件講解伺服器元件
- 雲端計算教程學習入門影片課件:雲端計算終端技術講解
- 雲端計算教程學習入門影片課件:雲端計算通訊協議講解協議
- 雲端計算教程學習入門影片課件:互操作性與可移植性講解
- 雲端計算教程學習入門影片課件:雲端計算基礎服務元件講解元件
- 雲端計算教程學習入門影片課件:雲應用是什麼?
- 雲端計算教程學習入門影片課件:怎樣快速掌握Linux?Linux
- 雲端計算教程學習入門影片課件:常用資料庫排名資料庫
- 雲端計算教程學習入門影片課件:目錄漫遊技術
- 雲端計算教程學習入門影片課件:雲服務提供都有哪些?
- 雲端計算教程學習入門影片課件:雲服務有多安全?
- 雲端計算教程學習入門影片課件:什麼是中介軟體?
- 《java學習三》jvm效能優化-------調優JavaJVM優化
- 雲端計算教程學習入門影片課件:VDI(遠端桌面)是什麼?
- 雲端計算教程學習入門影片課件:私有辦公雲是什麼?
- JVM原理講解和調優JVM
- 雲端計算教程學習入門影片課件:虛擬化技術和容器技術詳解
- Web前端培訓教程學習路線影片原始碼課件:正向代理與反向代理Web前端原始碼
- 雲端計算教程學習入門影片課件:雲端計算與人工智慧人工智慧
- 雲端計算教程學習入門影片課件:雲服務的組成內容
- 雲端計算教程學習入門影片課件:雲端計算的加密與金鑰管理詳解加密
- 雲端計算教程學習路線影片原始碼課件:Linux效能監控工具-gtop原始碼Linux
- 雲端計算教程學習入門影片課件:怎麼組建雲端計算中心?
- 雲端計算教程學習入門影片課件:雲端計算中心怎麼選址?
- 雲端計算教程學習入門影片課件:雲端計算中IDS是什麼?
- 雲端計算教程學習入門影片課件:雲端計算中SOA是什麼?
- 雲端計算教程學習入門影片課件:雲端計算安全性有哪些?
- 雲端計算教程學習入門影片課件:私有云計算平臺怎麼搭建?
- 雲端計算教程學習入門影片課件:雲端計算架構參考模型架構模型
- JVM 調優(學習篇)JVM
- JVM調優-學習篇JVM
- 雲端計算培訓教程學習路線影片原始碼課件:seafile私有網盤搭建原始碼
- 雲端計算教程學習路線影片原始碼課件:shell指令碼實現獲取圖片原始碼指令碼