JVM实战与原理--前言及索引
JVM實戰與原理
?
大綱
在Java入門課中,我們編寫HelloWorld.java文件,用命令行運行javac后生成HelloWorld.class,之后用java命令運行HelloWorld.class文件,從而在控制臺打印出HelloWorld.
在這幾步中,你應該提出以下幾個問題
1. 為什么需要用javac來生成.class文件?
2. .class文件是什么?
3. 為什么用java命令運行.class文件后,就能開始執行代碼?
4. 運行過程中,我們在.java文件中定義的變量、實例、方法是怎么被存儲和調用的?
5. 內存中存儲的數據是如何被回收的?
了解了JVM,我們就對上面的問題有答案了
我們按以下順序進行敘述
JVM實戰與原理---編譯
JVM實戰與原理---class文件結構
JVM實戰與原理---類加載機制
JVM實戰與原理---內存區域分配
JVM實戰與原理---內存回收策略
JVM實戰與原理---字節碼執行引擎
?
啟用虛擬機,虛擬機通過設計的參數對內存進行分配。
java文件通過編譯器生成Class文件,虛擬機通過雙親委派機制對類進行加載,加載的類元信息放入方法區,同時在堆生成對應的Class對象
虛擬機啟用多個任務線程,包含
Main線程:用于執行main方法
Attach Listener 、Signal Dispatcher:用于接收并執行JVM命令
Finalizer線程:在垃圾收集前,調用對象的finalize()方法
Main線程會執行main方法,此時main方法會生成對應的棧幀,并入棧。
如果main方法中實例化對象,則堆中會存儲該實例對象,堆空間會通過垃圾收集器進行垃圾收集
如果main方法中調用了方法,則會生成對應棧幀入棧
如果main方法中啟用了新線程,則會生成新的棧與PC
?
總結
以上是生活随笔為你收集整理的JVM实战与原理--前言及索引的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php安装mem+cache扩展,安装m
- 下一篇: 技术博客-索引