成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Java 虛擬機總結 - JVM 內(nèi)存區(qū)域

2bdenny / 3169人閱讀

摘要:虛擬機運行時數(shù)據(jù)區(qū)虛擬機在執(zhí)行程序的過程中會把它所管理的內(nèi)存劃分為若干個不同的數(shù)據(jù)區(qū)域,以下是虛擬機所管理的運行時數(shù)據(jù)區(qū)程序計數(shù)器和寄存器來存放下一條指令地址類似,的程序計數(shù)器可看作當前線程所正在執(zhí)行不是下一條的字節(jié)碼的行號指示器。

Java 虛擬機( Java Virtual Machine,縮寫為 JVM ):是一種能夠運行 Java 程序的抽象計算機。

特點:實現(xiàn) Java 平臺無關性,使得編譯后的 Java 程序指令并不直接在硬件系統(tǒng)的 CPU 上執(zhí)行,而由 JVM 執(zhí)行。JVM 屏蔽了與具體操作系統(tǒng)平臺相關的信息,使得 Java 程序只需生成在 Java 虛擬機上運行的目標代碼(字節(jié)碼),再由 JVM把字節(jié)碼解釋成具體平臺上的機器指令執(zhí)行,就可以在多種平臺上不加修改地運行。

Java 虛擬機運行時數(shù)據(jù)區(qū)

Java 虛擬機在執(zhí)行 Java 程序的過程中會把它所管理的內(nèi)存劃分為若干個不同的數(shù)據(jù)區(qū)域,以下是 Java 虛擬機所管理的運行時數(shù)據(jù)區(qū):

程序計數(shù)器

和 pc 寄存器來存放下一條指令地址類似,JVM 的程序計數(shù)器可看作當前線程所正在執(zhí)行(不是下一條)的字節(jié)碼的行號指示器。在虛擬機的概念模型里,字節(jié)碼解釋器工作時可以通過改變這個計數(shù)器的值來選取下一條需要執(zhí)行的字節(jié)碼指令。

Java 虛擬機的多線程是通過線程輪流切換并分配處理器執(zhí)行的時間來實現(xiàn)的,在任何確定的某個時刻,一個處理器都只會執(zhí)行一條線程中的指令。因此,為了線程切換后能恢復到正確的執(zhí)行位置,每條線程都有一個獨立的程序計數(shù)器,即線程私有。

Java 虛擬機棧

描述了 Java 方法 執(zhí)行的內(nèi)存模型,即存放每個方法執(zhí)行時創(chuàng)建的棧幀,用于存放局部變量表、操作數(shù)棧、動態(tài)鏈接、返回地址等信息,線程私有。

本地方法棧

類似于 Java 虛擬機棧執(zhí)行 Java 方法服務,本地方法棧則為虛擬機使用到的 Native 方法服務,線程私有。

Java 堆

存放分配的對象實例及數(shù)組,可以處于物理上不連續(xù)的內(nèi)存空間,只要邏輯連續(xù)即可,線程共享,區(qū)域主要由垃圾收集器管理。

方法區(qū)

存儲一個類的結構信息,例如運行時常量池、成員變量和方法數(shù)據(jù)等,線程共享。
注意:方法區(qū)≠永久代(Permanent Generation),僅僅是因為HotSpot虛擬機中使用永久代來實現(xiàn)方法區(qū),以此像管理堆內(nèi)存一樣來管理方法區(qū)而已。

運行時常量池

方法區(qū)的一部分,用于存放編譯期間生成的各種字面量(文字所表示的取值,即固定值,對于 String 而言,形如 String str="hello"這種屬于字面量,有專門的字符串池進行保存,形如String str = new String("hello")這種不屬于字面量,則是在堆上分配)和符號引用(相當于Linux中一個文件的軟鏈接,在該類實際執(zhí)行時,才把符號引用轉為直接引用)。

本文發(fā)表于個人博客:http://lavnfan.github.io/,歡迎指教。

文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://systransis.cn/yun/66030.html

相關文章

  • JVM系列(一):深入詳解JVM 內(nèi)存區(qū)域總結!

    摘要:一內(nèi)存區(qū)域虛擬機在運行時,會把內(nèi)存空間分為若干個區(qū)域,根據(jù)虛擬機規(guī)范版的規(guī)定,虛擬機所管理的內(nèi)存區(qū)域分為如下部分方法區(qū)堆內(nèi)存虛擬機棧本地方法棧程序計數(shù)器。前言 在JVM的管控下,Java程序員不再需要管理內(nèi)存的分配與釋放,這和在C和C++的世界是完全不一樣的。所以,在JVM的幫助下,Java程序員很少會關注內(nèi)存泄露和內(nèi)存溢出的問題。但是,一旦JVM發(fā)生這些情況的時候,如果你不清楚JVM內(nèi)存的...

    Aldous 評論0 收藏0
  • 《深入理解java虛擬》學習筆記系列——java內(nèi)存區(qū)域劃分

    摘要:運行時數(shù)據(jù)區(qū)域的學習,是學習以及機制的基礎,也是深入理解對象創(chuàng)建及運行過程的前提。了解內(nèi)存區(qū)域劃分,是學習概念的前提。 Java 運行時數(shù)據(jù)區(qū)域的學習,是學習 jvm 以及 GC 機制的基礎,也是深入理解 java 對象創(chuàng)建及運行過程的前提。廢話不多說,直接進入正題: 一張圖總結 showImg(https://segmentfault.com/img/bVOMAn?w=685&h=5...

    史占廣 評論0 收藏0
  • Java程序員:不識Jvm真面目,只緣身在增刪查改中

    摘要:編譯器只需面向,生成能理解的代碼或字節(jié)碼文件。源文件經(jīng)編譯器,編譯成字節(jié)碼程序,通過將每一條指令翻譯成不同平臺機器碼,通過特定平臺運行。漲見識,字節(jié)碼執(zhí)行過程分析。解決辦法減少默認棧的容量來換取更多的線程支持。 前言 JVM是java的核心和基礎,在java編譯器和os平臺之間的虛擬處理器。它是一種基于下層的操作系統(tǒng)和硬件平臺并利用軟件方法來實現(xiàn)的抽象的計算機,可以在上面執(zhí)行java的...

    or0fun 評論0 收藏0
  • Java程序員:不識Jvm真面目,只緣身在增刪查改中

    摘要:編譯器只需面向,生成能理解的代碼或字節(jié)碼文件。源文件經(jīng)編譯器,編譯成字節(jié)碼程序,通過將每一條指令翻譯成不同平臺機器碼,通過特定平臺運行。漲見識,字節(jié)碼執(zhí)行過程分析。解決辦法減少默認棧的容量來換取更多的線程支持。 前言 JVM是java的核心和基礎,在java編譯器和os平臺之間的虛擬處理器。它是一種基于下層的操作系統(tǒng)和硬件平臺并利用軟件方法來實現(xiàn)的抽象的計算機,可以在上面執(zhí)行java的...

    ivydom 評論0 收藏0
  • JVM 內(nèi)存模型

    摘要:是描述方法執(zhí)行的內(nèi)存模型每個方法執(zhí)行的時候會同時創(chuàng)建一個棧幀,用于存儲局部變量表操作數(shù)棧動態(tài)連接返回地址方法出口等信息。虛擬機是使用局部變量表完成參數(shù)值到參數(shù)變量表的傳遞過程。堆內(nèi)存管理最大的一塊。 showImg(https://segmentfault.com/img/bVLqsv?w=475&h=398); 1. 虛擬機棧 VM Stack 線程私有,生命周期與線程相同。VM S...

    SexySix 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<