国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Java 虛擬機總結 - JVM 內存區域

2bdenny / 3164人閱讀

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

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

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

Java 虛擬機運行時數據區

Java 虛擬機在執行 Java 程序的過程中會把它所管理的內存劃分為若干個不同的數據區域,以下是 Java 虛擬機所管理的運行時數據區:

程序計數器

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

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

Java 虛擬機棧

描述了 Java 方法 執行的內存模型,即存放每個方法執行時創建的棧幀,用于存放局部變量表、操作數棧、動態鏈接、返回地址等信息,線程私有。

本地方法棧

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

Java 堆

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

方法區

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

運行時常量池

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

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

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

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

相關文章

  • JVM系列(一):深入詳解JVM 內存區域總結

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

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

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

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

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

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

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

    ivydom 評論0 收藏0
  • JVM 內存模型

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

    SexySix 評論0 收藏0

發表評論

0條評論

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