91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

Java架構師必備技能—JVM系列:問君能有幾多愁,系統宕機重啟流

發布時間:2020-07-12 10:00:49 來源:網絡 閱讀:206 作者:wx5d9ed7c8443c3 欄目:編程語言

上回說到《不識JVM真面目,只緣身在增刪查改中》

講述了一些有關于Jvm,線程,棧的有關技術知識,還有兩個關于JVM的面試題:

  1. JVM什么情況下會發生棧內存溢出?
  2. JVM中一次完整的GC流程是怎樣的?

GC——垃圾回收

完整意味著有多種情況

今天就接著將視頻內容介紹完

可達性分析算法——GC Roots

判斷對象的存活

在Java, 可作為GC Roots的對象包括:

  1. 虛擬機棧(本地變量表)中引用的對象.
  2. 方法區: 類靜態屬性引用的對象;
  3. 方法區: 常量引用的對象;

Java架構師必備技能—JVM系列:問君能有幾多愁,系統宕機重啟流

JVM中的堆

1、Java堆是垃圾回收器管理的主要區域

2、基于分代的方式

(1)新生代

  • Eden空間
  • From Survivor空間
  • To Survivor空間

(2)老年代

3、Java堆的大小參數設置

-Xmx 堆區內存可被分配的最大上限

-Xms 堆區內存初始內存分配的大小

Java架構師必備技能—JVM系列:問君能有幾多愁,系統宕機重啟流

新生代為什么分三個區?

新生代垃圾回收算法——復制算法

該算法的核心是將可用內存按容量劃分為大小相等的兩塊, 每次只用其中一塊, 當這一塊的內存用完, 就將還存活的對象復制到另外一塊上面, 然后把已使用過的內存空間一次清理掉.

優點

  • 不必考慮內存碎片問題。
  • 效率高。

缺點

  • 可用容量減少為原來的一半,太浪費了。

Java架構師必備技能—JVM系列:問君能有幾多愁,系統宕機重啟流

最優設置

90%的對象都是朝生夕死的,所以使用10%的空間用作交換區,因為交換區必須有等量的兩個,所以采用復制算法的新生代中的三個區采用8:1:1的默認分配比例。

新生代對象的分配和回收

對象分配

  • 基本上新的對象優先在Eden區分配。
  • 當Eden區沒有足夠空間時,會發起一次Minor GC。
  • Minor GC回收新生代采用復制回收算法的改進版本
  • From和To的兩個交換區,這兩個區只有一個區有數據
  • 采用8:1:1的默認分配比例

(參數配置:-XX:SurvivorRatio )Eden區與Survivor區的大小比值。默認是8

Java架構師必備技能—JVM系列:問君能有幾多愁,系統宕機重啟流

思考:如果new對象過大?

老年代對象的分配和回收

老年代的對象一般情況下來自新生代

(1)長期存活對象進入老年代

  • 年齡閾(yu)值:每個對象定義了年齡(Age)計數器, 經過一次Minor GC(在交換區)后年齡加1。
  • 對象年齡達到15次后將會晉升到老年代,老年代空間不夠時進行Full GC。
  • 參數(-XX:MaxTenuringThreshold, 默認15)。

(2)大對象直接進入老年代

  • 超過Eden剩余空間
  • 超過一個參數值(-XX:PretenureSizeThreshold =XX, 無默認值)

(3)對象提前晉升(組團)

動態年齡判定:如果在Survivor空間中相同年齡所有對象大小的總和大于Survivor空間的一半,年齡大于或等于該年齡的對象就可以直接進入老年代, 而無須等到晉升年齡.

Java架構師必備技能—JVM系列:問君能有幾多愁,系統宕機重啟流

JVM中一次完整的GC流程是怎樣的?

從上兩節總結出的一個面試題

對象的正常流程

Eden -> Survivor區 -> 老年代

  • 新生代 Minor GC
  • 老年代 Full GC

總結

內存區域不夠用了,就會引發GC

作為架構師該怎么做:Minor GC避免不了,Full GC盡量避免

處理方式:保存堆棧快照日志、分析內存泄露、調整內存設置控制垃圾回收頻率,選擇適合的垃圾回收器

向AI問一下細節

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

AI

门源| 盐山县| 海口市| 巴里| 岱山县| 繁峙县| 古浪县| 成武县| 全椒县| 大邑县| 民和| 开封县| 府谷县| 浙江省| 巴南区| 景谷| 云霄县| 桑日县| 九龙县| 综艺| 永春县| 奉新县| 祁门县| 天镇县| 阿城市| 三河市| 游戏| 永康市| 周宁县| 正定县| 简阳市| 远安县| 嘉善县| 怀安县| 凯里市| 肇庆市| 巴彦县| 甘德县| 龙游县| 新兴县| 深水埗区|