日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java堆中的组成部分,初识Java虚拟机的基本结构 | If Coding

發布時間:2025/3/20 java 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java堆中的组成部分,初识Java虚拟机的基本结构 | If Coding 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Java虛擬機是什么?是做什么的?可能這些問題在我們學習Java之初就伴隨這我們。

一般來說我們使用IDE將我們編寫好的Java程序,點擊運行,在不出錯的情況下,就會得到我們想要的結果。那么這期間到底發生了什么?先看下圖:

知道的是Java程序通過編譯器編譯成class文件,那么后面到底發生了什么,就是Java虛擬機的工作?,F在我們先要認識Java虛擬機的基本結構。

類加載子系統

類加載子系統負責從文件系統或者網絡中加載class信息,加載的類信息存放在方法區的內存空間。

方法區存放的內容:

類信息

運行時常量池信息(class文件中常量池部分的內存映射)

字符串字面量

數字常量

Java堆(共享)

Java堆在虛擬機啟動的時候建立,它是Java程序最主要的內存工作區域。幾乎所有的Java對象實例都存放在Java堆中。

Java虛擬機規范規定:

Java堆處于物理上不連續的內存空間

Java堆處于邏輯上連續的內存空間

異常:

OutOfMemoryError。

直接內存(不是虛擬機運行時數據部分,也不是Java虛擬機規范中定義的內存區域)

Java的NIO庫允許Java程序使用直接內存。直接內存在Java堆外的、直接向系統申請的內存區間。

優點:

速度優于Java堆

情景:

出于性能考慮,讀寫頻繁的場合會考慮使用直接內存。

異常:

OutOfMemoryError。(Java堆和直接內存依然受限于操作系統能給出的內存。)

垃圾回收系統

垃圾回收系統是Java虛擬機的重要組成部分,垃圾回收器可以對方法區、Java堆和直接內存進行回收。其中Java堆是垃圾收集器的工作重點。

Java和c/c++不同:

Java中的對象空間釋放是隱式的。

c/c++中使用free()或者delete()來釋放指定的內存區域。

Java棧(私有)

每一個Java虛擬機線程都有一個私有的Java棧。一個線程的Java棧在線程創建的時候被創建。Java棧中保存著幀信息。

后面會對Java棧的結構進行詳細介紹。

異常:

StackOverflowError

OutOfMemoryError

本地方法棧

與Java棧非常類似。

不同點:調用的方法是本地方法(通常使用c編寫)。

異常:

StackOverflowError

OutOfMemoryError

PC程序計數器(私有)

PC寄存器也是每個線程私有的空間,Java虛擬機會為每一個Java線程創建PC寄存器。在任意時刻,一個Java線程總是執行一個方法,這個正在被執行的方法成為當前方法。

PC寄存器的值:

當前方法不是本地方法(Java方法),PC寄存器只想當前正在被執行的指令。

當前方法是本地方法,那么PC寄存器的值就是underfined。

執行引擎

執行引擎是Java虛擬機的最核心組件之一,它負責執行虛擬機的字節碼?,F在虛擬機為了提高效率,會使用即時編譯技術將方法編譯成機器碼后再執行。

最后,看一下Java虛擬機運行時數據區,注意與Java虛擬機的基本結構的區別:

總結

以上是生活随笔為你收集整理的java堆中的组成部分,初识Java虚拟机的基本结构 | If Coding的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。