java虛擬機知識____應付面試應該是夠用了

JVM 目錄

  1. JVM 體系結構概述
    1.1 類的加載機制
    1.2 類的加載器有哪幾種
    1.3 雙親委派機制
    1.4 沙箱安全機制
  2. 堆 體系結構概述
  3. 堆 參數調優入門
1.JVM體系結構概覽

2. 類加載器
  • 類的加載器一共有三種 BootStrapClassLoader、ExtensionClassLoader、AppClassLoader。加載順序如下

  • BootStrapClassLoader 加載下面路徑下的依賴包

C:\Program Files (x86)\Java\jdk1.8.0_191\jre\lib\rt.jar

  • ExtensionClassLoader 加載下面路徑下的依賴包

C:\Program Files (x86)\Java\jdk1.8.0_191\jre\lib\ext

  • AppClassLoader

加載用戶自定的類

  • 面試題: 雙親委派機制 當要加載一個類的是的時候、通常會從上向下區加載、首先查看BootStrapClassLoader、ExtensionClassLoader、AppClassLoader 如果存在的會父類區加載。這樣可以保證對象的唯一。這個唯一性也就是沙箱安全機制。
3. 本地方法棧
  • 本地方法棧 負責加載由其他語言編寫的依賴包、例如C語言或者C++語言編寫的業務邏輯。場景在與硬件交互的場景下會使用
4. JAVA棧
  • Java棧 複雜加載程序運行、棧的生命週期與線程同步、算法邏輯爲先進後出。存儲的爲 基本數據類型 + 對象引用變量 + 實例方法等。

  • 棧幀 代表的是每執行類中的一個方法都會產生一個棧幀。包括輸入、輸出變量、局部變量。進棧出棧的相關操作。

5. 程序計數器
  • 所有線程私有、佔用空間小。記錄的是程序的執行順序。
6. 方法區
  • 存儲的是文件的結構信息

7.堆 體系結構概述

知識點 一
堆內 存包括如下三個部分 新生代 、老年代、元空間。三者佔比爲  1 :  2 : 0  
 
備註 jdk1.8 以後 元空間替代永久代 ,並且元空間佔用的是物理內存而不是虛擬機內存, 佔用的物理內存比例爲 0.25 . 
知識點 二
在新生代中  伊甸園: 倖存者0 區:倖存者1 區 佔比爲 8 : 1 : 1
知識點 三

在jdk 1.8 當中 堆內存只包括兩部分 新生代 + 老年代 ,默認情況最大內存爲總內存的1/4、初始內存爲1/64

參數含義   
                 1.    -- Xms    堆當中初始化內存 
                 2.   -- Xmm   堆當中最大內存   
                 3.   -- Xmn    新生代佔用內存
 
在參數調優目標:     減小GC程序的回收次數、提高GC程序的執行效率、因爲GC程序的執行會影響程序的運行效率。
方法1   將堆的初始內存 設置爲 堆的最大內存
知識點 四 垃圾回收機制的執行流程
 
在新生代     1.   伊甸園區做gc操作將存活的         對象拷貝到 倖存者0區 
            2.   當倖存者0滿了 以後做GC操作將  對象拷貝到  倖存者1 區
 
在老年代     3.  當倖存者1區滿了 以後做GC 操作   將存貨的對象拷貝到 老年代區
            4.  當老年代 滿了以後 會做 FULL GC 操作 
            5.  Full GC 操作以後發現 由於空間原因 無法將對象進行保存 就會出行 OOM 錯誤,因此發送異常區域在老年代
知識點 五
在老年代執行FULL GC的效率是 小於  在新生代 執行GC 效率的。 原因是因爲老年代空間是新生代的2倍。但是老年代執行的效率卻比新生代慢了大約8-10倍
知識點 六 GC回收算法

在堆當中 對於不同的區域會執行不同的算法, 算法的效率不存在好壞。只有是否適合。

GC回收算法 
 
(1 ) 引用計數發 :對象被引用一次就是會 +1 、引用第二次 +1 +1 。如果不在引用就會 -1 。
缺點 維護計數器本身也會消耗資源 、對於循環引用複雜度高。已經廢棄了
 
(2) 複製算法 : 作用在新生代、對象在做GC操作的時候對象 對象會被複制。
 
優點: 對象在內存是連續、不會產生碎片化
缺點: 佔用空間 、因爲被複制兩次
 
(3) 標記算法 :作用在老年、執行邏輯 第一次標記要清除的對象、第二次清楚對象
優點: 無空間的佔用
缺點:  對象在內存中不是連續的、產生碎片化
 
(4) 標記壓縮算法 : 作用在老年代  執行邏輯 第一次標記要清除的對象、第二次清楚對象 、第三步壓縮對象
 
優點: 無碎片化
缺點: 時間複雜度高

關注微信公衆號程序員睿睿

關注後回覆 java虛擬機
獲取 《深入理解Java虛擬機JVM高級特性與最佳實踐》

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章