Java虛擬機棧(瞭解)

Java虛擬機棧也是線程私有的 ,它的生命週期與線程相同線程

  • 棧幀調用深度大於JVM所容許的範圍,
    • 會拋出StackOverflowError的錯誤
  • 虛擬機棧描述的是Java方法執行的內存模型:
    • 每一個方法在執行的同時都會建立一個棧幀用於存儲局部變量表操做數棧動態鏈表方法出口信息等。
      • 符號引用和直接引用在運行時進行解析和連接的過程,叫動態連接。
    • 每個方法從調用直至執行完成的過程,就對應着一個棧幀在虛擬機棧中入棧到出棧的過程。
  • 局部變量表
    • 存放了編譯器可知的各類基本數據類型(boolean、byte、char、short、int、float、long、double)、
    • 對象引用
    • returnAddress類型(指向了一條字節碼指令的地址)。 
    • 若是擴展時沒法申請到足夠的內存,
      • 就會拋出OutOfMemoryError異常。
  • 本地方法棧(瞭解) 
    • 本地方法棧與虛擬機的做用類似,
    • 不一樣之處在於虛擬機棧爲虛擬機執行的Java方法服務,
    • 而本地方法棧則爲虛擬機使用到的Native方法服務。
    • 有的虛擬機直接把本地方法棧和虛擬機棧合二爲一。
    • 會拋出stackOverflowError和OutOfMemoryError異常。  
相關文章
相關標籤/搜索