亚洲精品亚洲人成在线观看麻豆,在线欧美视频一区,亚洲国产精品一区二区动图,色综合久久丁香婷婷

              當前位置:首頁 > IT技術(shù) > 其他 > 正文

              JVM 核心知識
              2022-05-11 10:58:15

              1.線程

              這里所說的線程指程序執(zhí)行過程中的一個線程實體。JVM 允許一個應用并發(fā)執(zhí)行多個線程。Hotspot JVM 中的 Java 線程與原生操作系統(tǒng)線程有直接的映射關(guān)系。當線程本地存儲、緩沖區(qū)分配、同步對象、棧、程序計數(shù)器等準備好以后,就會創(chuàng)建一個操作系統(tǒng)原生線程。Java 線程結(jié)束,原生線程隨之被回收。操作系統(tǒng)負責調(diào)度所有線程,并把它們分配到任何可用的 CPU 上。當原生線程初始化完畢,就會調(diào)用 Java 線程的 run() 方法。當線程結(jié)束時,會釋放原生線程和 Java 線程的所有資源。

              2.JVM 內(nèi)存區(qū)域

              • 線程私有
              • 程序計數(shù)器:指向虛擬機字節(jié)碼指令的位置,唯一一個無OOM的區(qū)域
              • 虛擬機棧
              • 虛擬機棧與線程的生命周期相同
              • 一個線程中,每調(diào)用一個方法創(chuàng)建一個棧幀(Stack Frame)
              • 棧幀結(jié)構(gòu):本地變量 操作數(shù)棧 對運行時常量池的引用
              • 異常:
              • 線程請求的棧深度大于JVM所允許的深度,會出現(xiàn):StackOverflowEiior
              • 若JVM允許動態(tài)擴展,若無法申請到足夠內(nèi)存,則出現(xiàn):OutOfMemoryError
              • 本地方法棧
              • 線程共享
              • Java 堆:類的實例
              • 新生代
              • eden
              • from survivor
              • to survivor
              • 老年代
              • 異常 :OutOfMemoryError?
              • 方法區(qū)
              • 直接內(nèi)存:不受JVM GC 管理

              線程私有數(shù)據(jù)區(qū)域生命周期與線程相同, 依賴用戶線程的啟動/結(jié)束 而 創(chuàng)建/銷毀(在 Hotspot ?VM 內(nèi), 每個線程都與操作系統(tǒng)的本地線程直接映射, 因此這部分內(nèi)存區(qū)域的存/否跟隨本地線程的生/死對應)。

              線程共享區(qū)域隨虛擬機的啟動/關(guān)閉而創(chuàng)建/銷毀。

              直接內(nèi)存并不是 JVM 運行時數(shù)據(jù)區(qū)的一部分, 但也會被頻繁的使用: 在 JDK 1.4 引入的 NIO 提供了基于 Channel 與 Buffer 的 IO 方式, 它可以使用 Native 函數(shù)庫直接分配堆外內(nèi)存, 然后使用DirectByteBuffer 對象作為這塊內(nèi)存的引用進行操作(詳見: Java I/O 擴展), 這樣就避免了在 Java堆和 Native 堆中來回復制數(shù)據(jù), 因此在一些場景中可以顯著提高性能。

              JVM 核心知識_數(shù)據(jù)













              本文摘自 :https://blog.51cto.com/l

              開通會員,享受整站包年服務立即開通 >