jvm優化(一)
阿新 • • 發佈:2018-04-19
方法 守護線程 run 參數 main JD 自己 class roo
什麽是jvm?
java程序自己獨立運行環境,包括堆棧、寄存器和java字節碼的指令集。
jvm上可以運行的語言
- Java
- Scala
- Groovy
jvm、jdk和jre
jvm:jvm是jre的一部分
jre:java運行環境,包含jvm
jdk:包含
- jre
- jvm
- 常用的一些開發工具,javac、java和jconsol等等
生命周期
main方法是jvm實例運行的起點,main作為程序初始線程的起點,任何其他線程都由該線程負責啟動,main線程是非守護線程。
jvm實例消亡的方法:
- 所有的非守護線程都終止時
- System.exit()
組成
- 類加載器子系統(class loader)
- 執行引擎子系統
- 運行時數據區(runtime data area)
- Native接口
運行流程
- 首先將java源代碼通過javac指令編譯成字節碼文件
- 字節碼文件通過class loader進行加載
- 將類的權限修飾、類名、成員變量修飾、成員變量、方法修飾、方法參數和方法返回值等等放入運行時數據區的方法區;將new出來的對象放入堆中,類的靜態變量放入堆的常量池中;將對象索引放入VM棧裏;調用本地方法放入本地方法棧;PC寄存器根據線程數分配,用於存放代碼讀取行數。
- 執行引擎根據運行時數據區調用本地庫接口和本地方法庫
jvm優化(一)