Java知識分享網 - 輕松學習從此開始!????

Java知識分享網

Java1234官方群25:java1234官方群25
Java1234官方群25:838462530
     

GIT視頻教程(結合github,碼云)免費領取

SpringBoot打造全棧在線教育平臺實戰課程

SpringBoot打造企業級進銷存

Java1234 VIP課程

領取微信掃碼登錄Java實現視頻教程

Java1234至尊VIP(特價活動)

Java虛擬機(JVM)面試寶典 PDF 下載


分享到:
時間:2020-06-17 15:06來源:http://www.ujifkk.icu 作者:小鋒  侵權舉報
Java虛擬機(JVM)面試寶典 PDF 下載
失效鏈接處理
Java虛擬機(JVM)面試寶典 PDF 下載

 
本站整理下載:
提取碼:xtht 
 
 
相關截圖:
 
主要內容:

一、Java 內存區域
1.1 說一下 JVM 的主要組成部分及其作用?
JVM 包含兩個子系統和兩個組件,兩個子系統為 Class loader(類裝載)、Execution 
engine(執行引擎);兩個組件為 Runtime data area(運行時數據區)、Native Interface(本
地接口)。 ? Class loader(類裝載):根據給定的全限定名類名(如:java.lang.Object)來裝載
class 文件到 Runtime data area 中的 method area。 ? Execution engine(執行引擎):執行 classes 中的指令。
? Native Interface(本地接口):與 native libraries 交互,是其它編程語言交互的接
口。
? Runtime data area(運行時數據區域):這就是我們常說的 JVM 的內存。
作用 :首先通過編譯器把 Java 代碼轉換成字節碼,類加載器(ClassLoader)再把字節碼
加載到內存中,將其放在運行時數據區(Runtime data area)的方法區內,而字節碼文件
Java 虛擬機(JVM)面試寶典
第 4 頁,總共 29 頁
只是 JVM 的一套指令集規范,并不能直接交給底層操作系統去執行,因此需要特定的命令
解析器執行引擎(Execution Engine),將字節碼翻譯成底層系統指令,再交由 CPU 去執
行,而這個過程中需要調用其他語言的本地庫接口(Native Interface)來實現整個程序的
功能。
1.2 Java 程序運行機制詳細說明
Java 程序運行機制步驟
? 首先利用 IDE 集成開發工具編寫 Java 源代碼,源文件的后綴為.java; ? 再利用編譯器(javac 命令)將源代碼編譯成字節碼文件,字節碼; ? 運行字節碼的工作是由解釋器(java 命令)來完成的。
從上圖可以看,java 文件通過編譯器變成了.class 文件,接下來類加載器又將這些.class 文
件加載到 JVM 中。
其實可以一句話來解釋:類的加載指的是將類的.class 文件中的二進制數據讀入到內存中,
將其放在運行時數據區的方法區內,然后在堆區創建一個 java.lang.Class 對象,用來封裝
Java 虛擬機(JVM)面試寶典
第 5 頁,總共 29 頁
類在方法區內的數據結構。
1.3 JVM 運行時數據區
Java 虛擬機在執行 Java 程序的過程中會把它所管理的內存區域劃分為若干個不同的數據
區域。這些區域都有各自的用途,以及創建和銷毀的時間,有些區域隨著虛擬機進程的啟動
而存在,有些區域則是依賴線程的啟動和結束而建立和銷毀。Java 虛擬機所管理的內存被
劃分為如下幾個區域:
不同虛擬機的運行時數據區可能略微有所不同,但都會遵從 Java 虛擬機規范, Java 虛擬
機規范規定的區域分為以下 5 個部分:
? 程序計數器(Program Counter Register):當前線程所執行的字節碼的行號指示
器,字節碼解析器的工作是通過改變這個計數器的值,來選取下一條需要執行的字
節碼指令,分支、循環、跳轉、異常處理、線程恢復等基礎功能,都需要依賴這個
Java 虛擬機(JVM)面試寶典
第 6 頁,總共 29 頁
計數器來完成;
? Java 虛擬機棧(Java Virtual Machine Stacks):用于存儲局部變量表、操作數棧、
動態鏈接、方法出口等信息;
? 本地方法棧(Native Method Stack):與虛擬機棧的作用是一樣的,只不過虛擬
機棧是服務 Java 方法的,而本地方法棧是為虛擬機調用 Native 方法服務的;
? Java 堆(Java Heap):Java 虛擬機中內存最大的一塊,是被所有線程共享的,幾
乎所有的對象實例都在這里分配內存;
? 方法區(Methed Area):用于存儲已被虛擬機加載的類信息、常量、靜態變量、
即時編譯后的代碼等數據。

 

------分隔線----------------------------
關注公眾號
【Java資料站】
回復 666
獲取 
66套java
從菜雞到大神
項目實戰課程
欢乐捕鱼人千炮版 大盘蓝筹股票 宁夏11选五彩票网站 分分11选5平台 万科股票行情图片 河北快3开奖软件 初学者怎么理财 大乐乐透牛彩网 股票投资机构 一定牛上海十一选五遗漏 仙豆棋牌 好运快三是骗局吗 股票涨跌由什么决定 白小姐六肖选一肖中特 股票下跌k线 河南快三近30期走势图 中国一重股票分析