淺談JVM - 內存結構(四)- 本地方法棧

  • 本地方法棧(Native Method Stacks)與 Java 虛擬機棧所發揮的做用是很是類似的,其區別不過是虛擬機棧爲虛擬機執行 Java 方法(也就是字節碼)服務,而本地方法棧則是爲虛擬機使用到的 Native 方法服務。虛擬機規範中對本地方法棧中的方法使用的語言、使用方式與數據結構並無強制規定,所以具體的虛擬機能夠自由實現它。數據結構

     public native int hashCode();
  • Navtive 方法是 Java 經過 JNI 直接調用本地 C/C++ 庫,能夠認爲是 Native 方法至關於 C/C++ 暴露給 Java 的一個接口,Java 經過調用這個接口從而調用到 C/C++ 方法。當線程調用 Java 方法時,虛擬機會建立一個棧幀並壓入 Java 虛擬機棧。然而當它調用的是 native 方法時,虛擬機會保持 Java 虛擬機棧不變,也不會向 Java 虛擬機棧中壓入新的棧幀,虛擬機只是簡單地動態鏈接並直接調用指定的 native 方法。線程

  • 本地方法棧是一個後入先出(Last In First Out)棧。jwt

  • 因爲是線程私有的,生命週期隨着線程,線程啓動而產生,線程結束而消亡。blog

  • 本地方法棧會拋出 StackOverflowErrorOutOfMemoryError 異常。接口

歡迎關注公衆號,後續文章更新通知,一塊兒討論技術問題 。生命週期

公衆號二維碼

相關文章
相關標籤/搜索