摘要:
一.前言 物理機的執(zhí)行引擎是直接在物理硬件如CPU、操作系統(tǒng)、指令集上運行的,但是對于虛擬機來講,他的執(zhí)行引擎由自己實現(xiàn)。 執(zhí)行引擎有統(tǒng)一的外觀(Java虛擬機規(guī)范),不同類型的虛擬機都遵循了這一規(guī)范,輸入字節(jié)碼文件,解析字節(jié)碼處理,然后輸出結果。 二.運行時棧幀結構 1、棧幀概念棧幀(Stack
閱讀全文
摘要:
一.前言 我們一定心里有個疑問,我們那個多態(tài)是怎么回事?我們指定的一個接口,卻可以等到運行時可以對應于不同的實現(xiàn)類。這是因為,Java有個特性就是依賴運行期動態(tài)加載和動態(tài)連接,這樣實現(xiàn)了Java可以動態(tài)進行擴展。我們甚至可以從網(wǎng)絡或者其他的地方加載一個二進制流作為程序的一部分。所以,我們通過編譯器將
閱讀全文
摘要:
一.程序存儲格式 統(tǒng)一的程序存儲格式:不同平臺的虛擬機于所有平臺都統(tǒng)一使用程序存儲格式——字節(jié)碼(ByteCode); Java 虛擬機不關心 Class 文件的來源,而只和“Class文件"這種二進制文件格式關聯(lián),也就是說Java虛擬機只認識“Class"文件; Java 編譯器可以把 Java
閱讀全文
摘要:
一.概述 哪些內(nèi)存需要回收? 什么時候回收? 如何回收? 二.對象已死嗎 1.引用計數(shù)算法 定義:給對象添加一個引用計數(shù)器,當增加一個引用時,加1,當一個引用時,減1; 缺陷:當對象之間互相循環(huán)引用時,就會變的像“不死對象”; 2.可達性分析算法 在主流的商用程序語言(Java、C#,甚至包括前面提
閱讀全文
摘要:
一.概述 我們在進行 Java 開發(fā)的時候,很少關心 Java 的內(nèi)存分配等等,因為這些活都讓 JVM 給我們做了。不僅自動給我們分配內(nèi)存,還有自動的回收無需再占用的內(nèi)存空間,以騰出內(nèi)存供其他人使用。但是我們經(jīng)常面臨的一個問題就是內(nèi)存泄漏,JVM無法完成回收工作,導致內(nèi)存占用暴漲,最后可能讓程序奔潰
閱讀全文
摘要:
本課題是對《深入理解Java虛擬機》周志明 第二版的總結 具體可以參考:https://pan.baidu.com/s/1v_mPp--XV4u4rCBMkbR37A 第1版 可以忽略 直接看 第2版就行
閱讀全文