JVM 簡介、程式計數器、虛擬機器棧
阿新 • • 發佈:2020-10-17
JVM是什麼?
定義:Java Virtual Machine - java程式的執行環境 (java 二進位制位元組碼的執行環境)
Java的優點(JVM)
- 一次編寫,到處執行
- 自動記憶體管理,垃圾回收功能
- 陣列下標越界越界檢查
- 多型
JVM JDK JRE 的關係
Program Counter Register程式計數器(暫存器)
在java程式碼進行編譯執行的時候,先將java程式碼轉換成二進位制的編碼,這個地方的二進位制編碼就是jvm指令,jvm的指令會給到直譯器,而在這裡程式計數器就會記住嚇一跳jvm指令的地址。這就是程式計數器。
程式計數器的特點
- 是執行緒私有的
- 不會存在記憶體溢位
Java Virtual Machine Stack 虛擬機器棧
定義 :每個執行緒只能有一個活動棧幀,對應著當前正在執行的那個方法
使用程式碼進行測試,程式碼如下:一段簡單的java程式碼,在設定斷點,進行debug,每執行一條語句,這個方法會佔用記憶體,也就是會被放進這個棧當中,當方法執行完成之後再進行出棧操作。
問題辨析
- 垃圾回收是否涉及棧記憶體?
答:棧的記憶體不需要進行回收。 - 棧記憶體分配越大越好嗎?
答:不是,記憶體分配的越大,執行緒的數目會變少,採取預設大小即可。 - 方法內的區域性變數是否執行緒安全?
答:如果方法內區域性變數沒有逃離方法的作用訪問,它是執行緒安全的。如果是區域性變數引用了物件,並逃離方法的作用範圍,需要考慮執行緒安全