1. 程式人生 > 實用技巧 >JVM 簡介、程式計數器、虛擬機器棧

JVM 簡介、程式計數器、虛擬機器棧

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,每執行一條語句,這個方法會佔用記憶體,也就是會被放進這個棧當中,當方法執行完成之後再進行出棧操作。

在這裡插入圖片描述
問題辨析

  1. 垃圾回收是否涉及棧記憶體?
    答:棧的記憶體不需要進行回收。
  2. 棧記憶體分配越大越好嗎?
    答:不是,記憶體分配的越大,執行緒的數目會變少,採取預設大小即可。
  3. 方法內的區域性變數是否執行緒安全?
    答:如果方法內區域性變數沒有逃離方法的作用訪問,它是執行緒安全的。如果是區域性變數引用了物件,並逃離方法的作用範圍,需要考慮執行緒安全