亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JVM如何優化

發布時間:2022-10-17 14:39:12 來源:億速云 閱讀:151 作者:iii 欄目:編程語言

這篇文章主要講解了“JVM如何優化”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“JVM如何優化”吧!

 gc 垃圾回收

垃圾回收的方式:復制算法、標記整理、標記清除、分代回收

垃圾回收的實現:SerialparNewparallel Scavengeg1d等等

graph LR
	
A("Eden")
B("from")
C("to")
A -.- B
B -.- C

Java堆中,默認Eden: from: to = 8: 1: 1

1 目的

  • 將轉移到老年代的對象數量降低到最小;

  • 減少fullGC的執行時間

1 問題及解決

  • 頻繁有大對象在新生代發生復制算法,性能大大降低?

-XX:PretenureSizeThreshold=<byte size> # 新生代中的對象進入老年代的大小閾值

當對象大小超過設定的字節大小,會直接進入老年代,不接受復制算法的影響

  • FGC 太過頻繁,怎么解決?

    • 新生代過小,導致對象提前進入老年代,觸發老年代發送FGC;

    • 老年代較大,進行GC時耗時較大;

-XX:NewRatio=4 # 老年代 與 新生代的 比值,即新生代:老年代 = 4:1 
-XX:SurvivorRatio=4 # Eden 與 一個 Survivor 的比值,即 Eden: Survivor = 4:1
  • OOM (Out Of MemoryError) 內存溢出錯誤與SO(Stack OverFlow) 棧溢出?

    • Xss設置過小,而每個方法執行需要的局部變量內存太大或者方法嵌套循環次數太高就是出現

    • 存在死循環或者不斷重復創建對象,堆實際大小超過了Xmx限制

    • 虛擬機裝載了太多Classjar信息,使得永久代(之前叫方法區)空間不夠

理解完后我們去解決

Java虛擬機規范 Java 堆的原文:The heap is the runtime data area from which memory for all class instances and arrays is allocated.

我們都知道,每個線程生命周期與虛擬機棧一樣,間接說明創建線程的同時也會創建對應的私有虛擬機棧,用于Java方法執行的內存模型

而Java中提供JVM調優的三大參數:

用于Java堆(新生代和老年代)

-Xms, -Xmx

用于永久代

-XX:PermSize, -XX:MaxPermSize

用于線程棧,不同在于前者可以通過k、m和g來設置,后者要“=數字”,默認以KB(千字節)為單位

-Xss, -XX:ThreadStackSize

首先先理解堆,堆是GC收集器管理的主要區域,這時應該會聯想到前文所講的新生代與老年代,更深入就是EdenFromTo了。

首先先分類,內存溢出有棧溢出和堆溢出,-Xms-Xms是設置Java堆的初始化大小和可擴展最大值,一般設置成一致,避免發生內存抖動,而-Xss則是Stack Size的意思,即是每個線程創建虛擬機棧的大小

而且內存受操作系統限制,溢出的問題根源也在這里

物理最大內存 = 保留內存 + Xmx(堆) + Xss(棧) * 線程數
Xss = 虛擬機棧寬度(棧幀大小) * 虛擬機棧深度(棧幀數)
棧幀 = 局部變量表 + 操作數棧 + 動態鏈接 + 方法入口 + 其他

內存因為永久代導致的溢出,可以清理應用程序中web-inf/lib下的jar,或者tomcat中啟動了多個程序則公用相同的Jar

其他內存溢出還有諸如直接內存內存溢出、垃圾回收超時內存溢出、創建本地線程內存溢出、超出交換區內存溢出、數組超限內存溢出、系統殺死進程內存溢出。

感謝各位的閱讀,以上就是“JVM如何優化”的內容了,經過本文的學習后,相信大家對JVM如何優化這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

jvm
AI

鄂伦春自治旗| 澎湖县| 新蔡县| 泊头市| 灵台县| 望奎县| 明水县| 五莲县| 湖南省| 青浦区| 临汾市| 东乡族自治县| 永宁县| 武威市| 文登市| 尼勒克县| 桐梓县| 芜湖县| 甘肃省| 平果县| 共和县| 桂阳县| 临夏市| 苏尼特左旗| 三台县| 成都市| 三河市| 肇东市| 万载县| 临颍县| 泰安市| 清远市| 平顶山市| 莱芜市| 浙江省| 图们市| 武宁县| 达拉特旗| 夏河县| 正宁县| 江门市|