JVM---運行時數據區(線程)

2、運行時數據區

前言

內存是非常重要的系統資源,是硬盤和CPU的中間倉庫及橋樑,承載着操作系統和應用程序的實時運行。JVM內存佈局規定了Java|在運行過程中內存申請、分配、管理的策略,保證了JVM的高效穩定運行。不同的JVM對於內存的劃分方式和管理機制存在着部分差異。結合JVM虛擬機規範,來探討一下經典的JVM內存佈局。

在這裏插入圖片描述

方法區與堆是線程共享的,程序計數器、本地方法棧、虛擬機棧是線程私有的。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-ZUpgO9n6-1592447680415)(C:\Users\秦\AppData\Roaming\Typora\typora-user-images\1591851939204.png)]

線程

線程是一個程序裏的運行單元。JVM允許一-個應用有多個線程並行的
執行。

  • 在HotspotJVM裏,每個線程都與操作系統的本地線程直接映射。
    • 當一個Java線程準備好執行以後,此時一個操作系統的本地線程也同時創建。Java線程執行終止後,本地線程也會回收。
  • 操作系統負責所有線程的安排調度到任何一個可用的CPU上。一旦本地線程初始化成功,它就會調用Java線程中的run()方法。

Java線程

  • 如果你使用j console或者是任何一一個調試工具,都能看到在後臺有許多線程在運行。這些後臺線程不包括調用public static void main (String[])的main線程以及所有這個main線程自己創建的線程。
  • 這些主要的後臺系統線程在Hotspot JVM裏主要是以下幾個:
    • 虛擬機線程:這種線程的操作是需要JVM達到安全點付會出現。這些操作必須在不同的線程中發生的原因是他們都需要JVM達到安全點,這樣堆纔不會變化。這種線程的執行類型包括”stop-the-world"的垃圾收集,線程棧收集,線程掛起以及偏向鎖撤銷。
    • 週期任務線程:這種線程是時間週期事件的體現(比如中斷),他們一般用於週期性操作的調度執行。
    • GC線程:這種線程對在JVM裏不同種類的垃圾收集行爲提供了支持。
    • 編譯線程:這種線程在運行時會將字節碼編譯成到本地代碼。
    • 信號調度線程:這種線程接收信號併發送給JVM,在它內部通過調用適當的方法進行處理。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章