JVM 介紹


JVM 介紹:

JVM是Java Virtual Machine(Java虛擬機)的縮寫,JVM是一種用於計算設備的規范,它是一個虛構出來的計算機,是通過在實際的計算機上仿真模擬各種計算機功能來實現的。

Java語言的一個非常重要的特點就是與平台的無關性。而使用Java虛擬機是實現這一特點的關鍵。一般的高級語言如果要在不同的平台上運行,至少需要編譯成不同的目標代碼。而引入Java語言虛擬機后,Java語言在不同平台上運行時不需要重新編譯。Java語言使用Java虛擬機屏蔽了與具體平台相關的信息,使得Java語言編譯程序只需生成在Java虛擬機上運行的目標代碼(字節碼),就可以在多種平台上不加修改地運行。Java虛擬機在執行字節碼時,把字節碼解釋成具體平台上的機器指令執行。這就是Java的能夠“一次編譯,到處運行”的原因。

java 源代碼編譯過程

java 基本數據類型

byte://1 字節有符號整數的補碼
short://2字節有符號整數的補碼
int://4字節有符號整數的補碼
long://8字節有符號整數的補碼
float://4字節IEEE754 單精度浮點數
double://8字節IEEE754 雙精度浮點數
char://2 字節無符號Unicode 字符
boolean:boolean數據類型表示一位的信息

其它數據類型

object//對一個Javaobject(對象)的4字節引用
returnAddress//4字節,用於jsr/ret/jsr-w/ret-w指令

JVM虛擬機內存結構

JVM虛擬機將其內存分為程序計數器、虛擬機棧、本地方法棧、java堆、方法區。

程序計數器:是一塊私有的內存空間,比較小。主要記錄下一條要運行的命令。

虛擬機棧:也是線程私有的內存空間,和java線程同一時間創建,主要用來保存局部變量、部分結果、並參與方法的調用和返回。(虛擬機棧運行時使用一種叫“棧幀”的數據結構保存上下文數據。)

本地方法棧:虛擬機棧用於管理java函數的調用,本地方法棧用於管理本地方法的調用(用C實現的方法)

java堆:所有的對象、數組都是在堆中分配空間。

堆分為:新生代、老年代。

新生代:存放剛剛產生的對象和年輕對象。新生代分為:e'den(對象剛創建時)、survivor space()、1(至少被GC一次)。

方法區(永久區):被JVM中的所有線程共享(獨立於java堆的內存空間)。主要保存的是類的元數據(類的類型信息、常量池、域信息、方法信息:存放常量和類的定義信息)。GC回收時,只回收永久區中常量池的回收(未被引用的常量),再就是對類元數據的回收。

 

 

JVM百度百科地址:https://baike.baidu.com/item/JVM/2902369?fr=aladdin

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM