cdn.xitu.io/2019/11/12/16e5ea36aa6e617d?w=477&h=178&f=png&s=90057">
我們提供的服務有:成都網站設計、成都網站制作、微信公眾號開發(fā)、網站優(yōu)化、網站認證、婁底ssl等。為上千多家企事業(yè)單位解決了網站和推廣的問題。提供周到的售前咨詢和貼心的售后服務,是有科學管理、有技術的婁底網站制作公司
JVM是Java的核心和基礎,在Java編譯器和os平臺之間的虛擬處理器。它是一種基于下層的操作系統(tǒng)和硬件平臺并利用軟件方法來實現(xiàn)的抽象的計算機,可以在上面執(zhí)行Java的字節(jié)碼程序。
java編譯器只需面向JVM,生成JVM能理解的代碼或字節(jié)碼文件。Java源文件經編譯器,編譯成字節(jié)碼程序,通過JVM將每一條指令翻譯成不同平臺機器碼,通過特定平臺運行。
這里就給大家講一下JVM。
JDK: java development kit (Java開發(fā)工具包) 編譯、反編譯、調試等。
JRE: java runtime enviroment (Java運行環(huán)境)
JVM: java Virtual Mechinal (Java虛擬機) 一次編寫,到處運行!
提升代碼質量、解決項目問題。
面試!面試!還是面試!
類加載器:Class字節(jié)碼文件加載到內存
執(zhí)行引擎:解析字節(jié)碼指令,得到執(zhí)行結果
運行時數據區(qū)
線程私有
線程共享
JVM什么情況下會發(fā)生棧內存溢出?
JVM中一次完整的GC流程是怎樣的?
程序計數器
指向當前線程正在執(zhí)行的字節(jié)碼指令的地址(行號)
棧(Stack)
FILO
虛擬機棧
創(chuàng)建一個線程就為線程分配一個虛擬機棧,它又會包含多個棧幀,因為每運行一個方法就創(chuàng)建一個棧幀。
棧幀
運行一個線程中的一個方法
深入理解虛擬機棧
演示一段代碼的方法的執(zhí)行過程
代碼:
public int calc(){
int a=100;
int b=200;
int c=300;
return(a+b)*c;
}
StackOverFlowError異常
棧容量 -Xss 默認1M
OutOfMemeoryError異常
Java堆
元數據區(qū)
直接內存