1. 程式人生 > >Java程式設計師深度剖析—Java 程式計數器

Java程式設計師深度剖析—Java 程式計數器

  1. 簡述

    程式計數器(program counter register)只佔用了一塊比較小的記憶體空間,至於小到什麼程度呢,這樣說吧,有時可以忽略不計的。

  2. 作用

    可以看作是當前執行緒所執行的位元組碼檔案(class)的行號指示器。在虛擬機器的世界中,位元組碼直譯器就是通過改變計數器的值來選取下一條執行的位元組碼指令,分支、迴圈、跳轉、異常處理、執行緒恢復都需要這玩意來實現的,NB嗎?

  3. 特性
    1. 因為處理器在一個確定是時刻只會執行一個執行緒中的指令,執行緒切換後,是通過計數器來記錄執行痕跡的,因而可以看出,程式計數器是每個執行緒私有的。
    2. 如果執行的是java方法,那麼記錄的是正在執行的虛擬機器位元組碼指令的地址的地址,如果是native方法,計數器的值為空(undefined)。
    3. 這個記憶體區域是唯一一個在java虛擬界規範中沒有規定任何OutOfMemoryError的情況的區域。至於為什麼沒有這個異常呢,要是一個計數的功能在出這個異常,那麼我也是醉了。