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.
vs2019運行opencv圖片顯示代碼時,窗口亂碼
2.
app自動化 - 元素定位不到?別慌,看完你就能解決
3.
在Win8下用cisco ××× Client連接時報Reason 422錯誤的解決方法
4.
eclipse快速補全代碼
5.
Eclipse中Java/Html/Css/Jsp/JavaScript等代碼的格式化
6.
idea+spring boot +mabitys(wanglezapin)+mysql (1)
7.
勒索病毒發生變種 新文件名將帶有「.UIWIX」後綴
8.
【原創】Python 源文件編碼解讀
9.
iOS9企業部署分發問題深入瞭解與解決
10.
安裝pytorch報錯CondaHTTPError:******
本站公眾號
歡迎關注本站公眾號,獲取更多信息
相關文章
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內部結構
>>更多相關文章<<