JavaShuo
欄目
標籤
深刻理解JVM之基本構架
時間 2021-08-12
標籤
java
web
tomcat
服務器
eclipse
jvm
ide
工具
spa
插件
欄目
Java
简体版
原文
原文鏈接
深刻理解JVM之基本構架
JVM詳解之 基本構架
須要小夥伴使用圖形化工具【jvisualvm】幫助咱們分析。
java
首先來看圖,進行理解。
類加載器將【class】文件加載到方法區,若是是java程序,jvm會把main所在的類實例化並在虛擬機棧下開闢棧空間。若是是javaweb tomcat等應用服務器,應用服務器會加載。
在main以後,棧中就會添加棧幀,而後main可能會new 調用方法等等,new 就在heap中分配空間,在棧幀的局部變量表中添加引用地址;調用方法會新創一個棧幀。實際上,棧就是一個遞歸的過程,直到main執行完畢,最後程序結束。這個大體的過程請小夥伴們必定要理解。
具體分析————————————【①方法區】
在Class文件中除了類的字段、方法、接口等描述信息外例如:類的全限定名(類的全路徑名) 類的直接超類的全限定名(若是這個類是Object,則它沒有超類)這個類是類型(類)仍是接口,類的訪問修飾符,全部的直接接口全限定名的有序列表(假如它實現了多個接口) 包含但不限於這些內容。若是是作java開發瞭解到此,我認爲足矣。開發虛擬機就只是常識。
在方法區中有一個很是重要的部分就是運行時常量池,它是每個類或接口的常量池的運行時表示形式,在類和接口被加載到JVM後,對應的運行時常量池就被建立出來。固然並不是Class文件常量池中的內容才能進入運行時常量池,在運行期間也可將新的常量放入運行時常量池中。
以上爲我的見解和觀點,若有不正之處但願諒解並歡迎指正。
具體分析————————————【②堆】
堆中主要就要講解gc過程,在此只簡單提一下,由於gc過程牽扯到內存分配和垃圾回收,這個問題徹底須要另外詳細解析。
具體分析————————————【③虛擬機棧】
每個JVM線程都有本身的java虛擬機棧,這個棧與線程同時建立,它的生命週期與線程相同。一個方法一個棧幀,形參和局部變量同等對待,也在棧中分配空間。當方法執行完畢後,對應的棧幀馬上消失(包含裏面的全部引用和局部變量)。而引用的實際變量(若是沒有引用指向他的時候)則在gc的時候消失。
具體分析————————————【其餘】
本地方法棧【native】能夠類比虛擬機棧,只不過此棧中調用的方法都是本地方法。除此以外,其餘的和虛擬機棧都相似。
而PC寄存器,也叫程序計數器【Program Counter Register】是一塊較小的內存空間,它的做用能夠看作是當前線程所執行的字節碼的信號指示器。
每一條JVM線程都有本身的PC寄存器在任意時刻,一條JVM線程只會執行一個方法的代碼。該方法稱爲該線程的當前方法(Current Method)若是該方法是java方法,那PC寄存器保存JVM正在執行的字節碼指令的地址若是該方法是native,那PC寄存器的值是undefined。小夥伴們只要知道就能夠了。
jvisualvm可視化工具和jconsole工具
命令行窗口輸入命令:【jvisualvm】
就會出現可視化工具,我是分析eclipse的堆棧,如圖下:
第一次打開可能沒有這麼多工具,能夠點擊【工具>插件>可用插件】,選中,並【安裝】。
而後咱們就能夠看到上面分析的一系列space面板。
命令行窗口輸入命令:【jconsole】
使用jconsole工具查看各個區域的運行環境。
相關文章
1.
深刻理解JVM(一)——基本原理
2.
深刻理解JVM結構
3.
深刻理解JVM之ClassLoader
4.
深刻理解JVM(一)JVM基本原理和類的加載
5.
深刻理解JVM(1)—Java虛擬機基本結構
6.
深刻理解JVM
7.
深刻理解MVC架構
8.
深刻理解Tomcat架構
9.
深刻理解Hadoop之HDFS架構
10.
深刻理解JVM內部結構
更多相關文章...
•
Docker 架構
-
Docker教程
•
Lua 基本語法
-
Lua 教程
•
Kotlin學習(二)基本類型
•
Kotlin學習(一)基本語法
相關標籤/搜索
深刻理解JVM
深刻理解javascript
深刻理解webpack
深刻理解redis
深刻理解ES6
深刻理解 RPC
深刻理解RocketMQ
深刻理解Spark
深刻理解RPC
深刻理解Nginx
HTML
Tomcat
Java
Eclipse
MySQL教程
Spring教程
PHP 7 新特性
架構
JVM
0
分享到微博
分享到微信
分享到QQ
每日一句
每一个你不满意的现在,都有一个你没有努力的曾经。
最新文章
1.
跳槽面試的幾個實用小技巧,不妨看看!
2.
Mac實用技巧 |如何使用Mac系統中自帶的預覽工具將圖片變成黑白色?
3.
Mac實用技巧 |如何使用Mac系統中自帶的預覽工具將圖片變成黑白色?
4.
如何使用Mac系統中自帶的預覽工具將圖片變成黑白色?
5.
Mac OS非兼容Windows軟件運行解決方案——「以VMware & Microsoft Access爲例「
6.
封裝 pyinstaller -F -i b.ico excel.py
7.
數據庫作業三ER圖待完善
8.
nvm安裝使用低版本node.js(非命令安裝)
9.
如何快速轉換圖片格式
10.
將表格內容分條轉換爲若干文檔
本站公眾號
歡迎關注本站公眾號,獲取更多信息
相關文章
1.
深刻理解JVM(一)——基本原理
2.
深刻理解JVM結構
3.
深刻理解JVM之ClassLoader
4.
深刻理解JVM(一)JVM基本原理和類的加載
5.
深刻理解JVM(1)—Java虛擬機基本結構
6.
深刻理解JVM
7.
深刻理解MVC架構
8.
深刻理解Tomcat架構
9.
深刻理解Hadoop之HDFS架構
10.
深刻理解JVM內部結構
>>更多相關文章<<