摘要:編譯器只需面向,生成能理解的代碼或字節(jié)碼文件。源文件經(jīng)編譯器,編譯成字節(jié)碼程序,通過將每一條指令翻譯成不同平臺機器碼,通過特定平臺運行。漲見識,字節(jié)碼執(zhí)行過程分析。解決辦法減少默認(rèn)棧的容量來換取更多的線程支持。
前言
JVM是java的核心和基礎(chǔ),在java編譯器和os平臺之間的虛擬處理器。它是一種基于下層的操作系統(tǒng)和硬件平臺并利用軟件方法來實現(xiàn)的抽象的計算機,可以在上面執(zhí)行java的字節(jié)碼程序。
java編譯器只需面向JVM,生成JVM能理解的代碼或字節(jié)碼文件。Java源文件經(jīng)編譯器,編譯成字節(jié)碼程序,通過JVM將每一條指令翻譯成不同平臺機器碼,通過特定平臺運行。
這里就給大家講一下JVM。
技術(shù)大咖帶你垂直打擊JVM
什么是運行時數(shù)據(jù)區(qū)? 我們一起來分享。
了解JVM底層原理,讓你的代碼擼得飛起。
搞定內(nèi)存溢出,漲薪升職。
漲見識,字節(jié)碼執(zhí)行過程分析。
直擊真相,原理和代碼全都有。
測試、效果演示及總結(jié)。
JDK: java development kit (Java開發(fā)工具包) 編譯、反編譯、調(diào)試等。
JRE: java runtime enviroment (Java運行環(huán)境)
JVM: java Virtual Mechinal (Java虛擬機) 一次編寫,到處運行!
學(xué)jvm的目就是:
提升代碼質(zhì)量、解決項目問題。
面試!面試!還是面試!
JVM是怎么玩的
類加載器:Class字節(jié)碼文件加載到內(nèi)存
執(zhí)行引擎:解析字節(jié)碼指令,得到執(zhí)行結(jié)果
運行時數(shù)據(jù)區(qū)
JVM運行時數(shù)據(jù)區(qū)線程私有
程序計數(shù)器
虛擬機棧
本地方法棧
線程共享
堆
列表項目
方法區(qū)
BAT的JVM面試題JVM什么情況下會發(fā)生棧內(nèi)存溢出?
JVM中一次完整的GC流程是怎樣的?
GC——垃圾回收
完整意味著有多種情況
程序計數(shù)器
指向當(dāng)前線程正在執(zhí)行的字節(jié)碼指令的地址(行號)
棧(Stack)
入口和出口只有一個
入棧
出棧
FILO
先進后出
虛擬機棧
創(chuàng)建一個線程就為線程分配一個虛擬機棧,它又會包含多個棧幀,因為每運行一個方法就創(chuàng)建一個棧幀。
運行時才有數(shù)據(jù)
棧幀
運行一個線程中的一個方法
1.局部變量表
2.操作數(shù)棧
3.動態(tài)連接
4.返回地址
演示一段代碼的方法的執(zhí)行過程
代碼:
public int calc(){ int a=100; int b=200; int c=300; return(a+b)*c; }虛擬機棧的異常
StackOverFlowError異常
原因:執(zhí)行的虛擬機棧深度大于虛擬機棧允許的最大深度(方法的遞歸調(diào)用)。
解決辦法:增加默認(rèn)棧的容量。
棧容量 -Xss 默認(rèn)1M
OutOfMemeoryError異常
原因:多線程環(huán)境下虛擬機在擴展棧時無法申請到足夠的內(nèi)存空間。
解決辦法:減少默認(rèn)棧的容量來換取更多的線程支持。
Java堆
Java堆是被所有線程共享的一塊內(nèi)存區(qū)域
所有的對象實例以及數(shù)組要在堆上分配
元數(shù)據(jù)區(qū)
老版本名稱:方法區(qū)(永久代)
類信息、常量、編譯后的代碼信息
直接內(nèi)存
以上源于一個視頻講解的概述總結(jié),后續(xù)將分享后半部分的內(nèi)容:
可達(dá)性分析算法——GC Roots
JVM中的堆
新生代為什么分三個區(qū)?
新生代對象的分配和回收
老年代對象的分配和回收
JVM中一次完整的GC流程是怎樣的?
**如果有興趣想了解視頻具體內(nèi)容的可以關(guān)注我,加入我的合作群(805685193)即可獲取原視頻。
還有一些Java架構(gòu)視頻講解,需要獲取Dubbo、Redis、設(shè)計模式、Netty、zookeeper、Spring cloud、分布式、高并發(fā)等架構(gòu)技術(shù)視頻教程資料,架構(gòu)思維導(dǎo)圖,和BATJ面試題及答案的,都是免費分享的。
關(guān)注我,加入我的合作群(805685193)即可獲取視頻。**
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/72987.html
摘要:編譯器只需面向,生成能理解的代碼或字節(jié)碼文件。源文件經(jīng)編譯器,編譯成字節(jié)碼程序,通過將每一條指令翻譯成不同平臺機器碼,通過特定平臺運行。漲見識,字節(jié)碼執(zhí)行過程分析。解決辦法減少默認(rèn)棧的容量來換取更多的線程支持。 前言 JVM是java的核心和基礎(chǔ),在java編譯器和os平臺之間的虛擬處理器。它是一種基于下層的操作系統(tǒng)和硬件平臺并利用軟件方法來實現(xiàn)的抽象的計算機,可以在上面執(zhí)行java的...
摘要:,黑色的主題風(fēng)格,很符合。時間復(fù)雜度雖然成功,但我明顯感覺代碼寫得不是很優(yōu)雅。這個是沒錯的,但缺乏了宏觀的視角,會變得片面。但是不重要,關(guān)鍵是這個思想要學(xué)習(xí),可以應(yīng)用到其他地方。求和,大于就返回偶數(shù)的位置,否則返回奇數(shù)的位置。 前幾天做LeetCode上的大數(shù)乘法,代碼沒錯,可就是提交不成功,顯示SyntaxError: Unexpected token var我把所有代碼都注釋掉,只...
摘要:起初,項目使用的是,其提供的方法用著比較爽,由于項目的很多數(shù)據(jù)來自豆瓣的,直接上簡單方便,跨域什么的不考慮??缬騿栴},上面已經(jīng)介紹,在不能操控的豆瓣數(shù)據(jù)上,使用的是。 項目地址 在線演示 不識廬山真面目,只緣身在此山中。 大概一個月前,開源了Vue重構(gòu)豆瓣移動端的項目,效果還可以,收到了很多小伙伴的反饋,話說是要寫一些文章的,但遲遲沒有動筆,估計小伙伴們等的花都謝了,拖延癥是病,需要治...
摘要:菜鳥教程框架中文手冊入門目標(biāo)使用搭建通過對數(shù)據(jù)增刪查改沒了純粹占行用的拜 后端API入門學(xué)習(xí)指北 了解一下一下概念. RESTful API標(biāo)準(zhǔn)] 所有的API都遵循[RESTful API標(biāo)準(zhǔn)]. 建議大家都簡單了解一下HTTP協(xié)議和RESTful API相關(guān)資料. 阮一峰:理解RESTful架構(gòu) 阮一峰:RESTful API 設(shè)計指南 RESTful API指南 依賴注入 D...
摘要:菜鳥教程框架中文手冊入門目標(biāo)使用搭建通過對數(shù)據(jù)增刪查改沒了純粹占行用的拜 后端API入門學(xué)習(xí)指北 了解一下一下概念. RESTful API標(biāo)準(zhǔn)] 所有的API都遵循[RESTful API標(biāo)準(zhǔn)]. 建議大家都簡單了解一下HTTP協(xié)議和RESTful API相關(guān)資料. 阮一峰:理解RESTful架構(gòu) 阮一峰:RESTful API 設(shè)計指南 RESTful API指南 依賴注入 D...
閱讀 3244·2021-09-07 10:10
閱讀 3589·2019-08-30 15:44
閱讀 2592·2019-08-30 15:44
閱讀 3016·2019-08-29 15:11
閱讀 2234·2019-08-28 18:26
閱讀 2754·2019-08-26 12:21
閱讀 1120·2019-08-23 16:12
閱讀 3037·2019-08-23 14:57