成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Java虛擬機結構:運行時數據區

云計算 虛擬化
Java虛擬機可以支持多條線程同時執行,每一條Java虛擬機線程都有自己的pc寄存器。再任意時刻,一條Java虛擬機線程只會執行一個方法的代碼,這個正在被線程執行的方法稱為該線程的當前方法。

 Java虛擬機可以支持多條線程同時執行,每一條Java虛擬機線程都有自己的pc寄存器。再任意時刻,一條Java虛擬機線程只會執行一個方法的代碼,這個正在被線程執行的方法稱為該線程的當前方法。

如果這個方法不是native的,那pc寄存器就保存Java虛擬機正在執行的字節碼指令的地址,如果該方法是native的,那pc寄存器的值是undefined。pc寄存器的容量至少應當能保存一個returnAddress類型的數據或者一個與平臺相關的本地指針的值。

Java虛擬機棧

每一條Java虛擬機線程都有自己私有的Java虛擬機棧,這個棧與線程同時創建,用于存儲棧幀。Java虛擬機棧用于存儲局部變量與一些尚未算好的結果。另外它在方法調用和返回中也扮演了很重要的角色。因為除了棧幀的出棧和入棧之外,Java虛擬機棧不會再受其他因素的影響,所以棧幀可以在堆中分配,Java虛擬機棧所使用的內存不需要保證是連續的。

Java虛擬機實現應當提供給程序員或者最終用戶調節虛擬機棧初始容量的手段,對于可以動態擴展和收縮Java虛擬機棧來說,則應當提供調節其***、最小容量的手段。

Java虛擬機棧可能發生如下異常情況:

  • 如果線程請求分配的棧容量超過Java虛擬機棧允許的***容量,Java虛擬機將會拋出一個StackOverflowError異常;
  • 如果Java虛擬機棧可以動態擴展,并且在嘗試擴展的時候無法申請到足夠的內存,或者在創建新的線程時沒有足夠的內存去創建對應的虛擬機棧,那Java虛擬機將會拋出一個OutOfMemoryError異常。

Java堆

在Java虛擬機中,堆是可供各個線程共享的運行時內存區域, 也是供所有類實例和數組對象分配內存的區域。

Java堆在虛擬機啟動的時候就被創建,它存儲了被自動管理系統(也即常說的垃圾收集器)所管理的各種對象,這些受管理的對象無需也無法顯式地銷毀。虛擬機實現者可以根據系統的實際需要來選擇自動內存管理技術。Java堆的容量可以是固定的,也可以隨著程序執行的需求動態擴展,并在不需要過多空間時自動收縮。Java堆所使用的內存不需要保證是連續的。

Java虛擬機實現應當提供給程序員或者最終用戶調節Java堆初始容量的手段,對于可以動態擴展和收縮Java堆來說,則應當提供調節其***、最小容量的手段。

Java堆可能發生如下異常:

  • 如果實際所需的堆超過了自動內存管理系統能提供的***容量,那Java虛擬機將會拋出一個OutOfMemoryError異常。

方法區

在Java虛擬機中,方法區是可供各個線程共享的運行時內存區域。方法區與傳統語言中的編譯代碼存儲區或者操作系統進程的正文段的作用非常相似,它存儲了每一個類的結構信息,例如,運行時常量池、字段和方法數據、構造函數和普通方法的字節碼內容,還包括一些在類、實例、接口初始化時用到的特殊方法。

方法區在虛擬機啟動的時候創建,雖然方法區是堆的邏輯組成部分,但是簡單的虛擬機實現可以選擇在這個區域不實現垃圾收集與壓縮。方法區的容量可以是固定的,也可以隨著程序執行的需求動態擴展,并在不需要過多空間時自動收縮。方法區在實際內存空間中可以是不連續的。

Java虛擬機實現應當提供給程序員或者最終用戶調節方法區初始容量的手段,對于可以動態擴展和收縮方法區來說,則應當提供調節其***、最小容量的手段。

方法區可能發生如下異常情況:

  • 如果方法區的內存空間不能滿足內存分配請求,那么Java虛擬機將拋出一個OutOfMemoryError異常。

運行時常量池

運行時常量池是class文件中每一個類或接口的常量池表的運行時表示形式,它包括了若干種不同的常亮,從編譯期可知的數值字面量到必須在運行期解析后才能獲得的方法或字段引用。運行時常量池類似于傳統語言中的符號表,不過它存儲數據的范圍比通常意義上的符號表要更為廣泛。

每一個運行時常量池都在Java虛擬機的方法區中分配,在加載類和接口到虛擬機后,就創建對應的運行時常量池。

在創建類和接口的運行時常量池時,可能會發生如下異常情況:

  • 當創建類或接口時,如果構造運行時常亮池所需要的內存空間超過了方法區所能提供的***值,那么Java虛擬機將會拋出一個OutOfMemoryError異常。

本地方法棧

Java虛擬機實現可能會使用到傳統的棧來支持native方法的執行,這個棧就是本地方法棧。當Java虛擬機使用其他語言來實現指令集解釋器時,也可以使用本地方法棧。如果Java虛擬機不支持native方法,或是本身不依賴傳統棧,那么可以不提供本地方法棧,如果支持本地方法棧,那這個棧一般會在線程創建的時候按線程分配。

Java虛擬機規范允許本地方法棧實現成固定大小或者根據計算來動態擴展和收縮。如果采用固定大小的本地方法棧,那么每一個線程的本地方法棧容量可以在創建棧的時候獨立選定。

Java虛擬機實現應當提供給程序員或者最終用戶調節本地方法棧初始容量的手段,對于可以動態擴展和收縮方法區來說,則應當提供調節其***、最小容量的手段。

本地方法棧可能發生如下異常情況:

  • 如果線程請求分配的棧容量超過本地方法棧允許的***容量,Java虛擬機將會拋出一個StackOverflowError異常。
  • 如果本地方法棧可以動態擴展,并且在嘗試擴展的時候無法申請到足夠的內存,或者在創建新的線程時沒有足夠的內存去創建對應的本地方法棧,那么Java虛擬機將會拋出一個OutOfMemoryError異常。
責任編輯:武曉燕 來源: wangjinlong
相關推薦

2018-10-25 09:04:56

Java虛擬機JVM

2022-03-21 11:07:43

JVM內存字節碼

2021-07-14 07:21:57

JVM運行數據

2022-01-17 22:09:50

JVM方法區數據

2021-08-13 08:15:23

JVM 虛擬機Java

2015-07-20 15:44:46

Swift框架MJExtension反射

2024-03-08 08:26:25

類的加載Class文件Java

2011-12-28 13:24:47

JavaJVM

2021-09-18 08:02:49

Go程序工具

2024-03-21 09:15:58

JS運行的JavaScrip

2024-04-03 13:49:00

Java虛擬機方法區

2024-11-26 08:31:36

2022-07-03 20:31:59

JVMJava虛擬機

2009-06-12 21:39:48

Java虛擬機體系結構Java虛擬機

2011-11-30 14:12:05

JavaJVM虛擬機

2020-11-02 08:54:29

JMMVolatileSynchronize

2021-09-11 15:38:23

容器運行鏡像開放

2019-07-12 09:30:12

DashboardDockerDNS

2018-07-31 14:03:09

JVM內存數據

2020-03-10 09:30:11

Java內存數據
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产成人综合久久 | 成人性生交大片免费看r链接 | 99re视频在线 | 在线啊v| 久久久久久久久久久久一区二区 | h免费观看 | 国产成人在线一区二区 | 97久久精品午夜一区二区 | 亚洲成人综合社区 | 国产高清视频一区 | 精彩视频一区二区三区 | 久久国产成人 | 亚洲综合精品 | 精品一区电影 | 亚洲精彩视频 | 九色在线观看 | 日韩欧美国产精品综合嫩v 一区中文字幕 | 国产区久久 | 国产成人精品在线播放 | 精品国产第一区二区三区 | 天天干在线播放 | 中文天堂在线一区 | 亚洲视频区 | 免费黄色在线观看 | 欧美一级在线免费观看 | 成人在线视频看看 | 天天操夜夜操 | 最近中文字幕第一页 | 欧美日韩亚洲一区 | 中文字幕在线观看成人 | 日本天堂视频 | av黄色网| 亚洲精品一区中文字幕乱码 | 激情五月婷婷在线 | 中文字幕在线电影观看 | 久久精品小视频 | 欧美中文在线 | 久久精彩视频 | 国产精品美女久久久久aⅴ国产馆 | 亚洲日本欧美日韩高观看 | 毛片网站在线观看 |