導航:首頁 > 安裝方法 > 方法返回地址動態連接存放在哪裡

方法返回地址動態連接存放在哪裡

發布時間:2024-06-08 13:51:27

⑴ java中,靜態方法被調用是,存儲在內存的哪個區域是棧還是放大區還是兩者都有

在JDK8之前,靜態成員(靜態變數和靜態方法)都是存儲在方法區(永久代)中的靜態區中(這里指類被載入後,靜態成員的存儲位置)。但在JDK8之後,永久代被移除了,取而代之的是元空間(metaspace)。但元空間中存儲的主要是.class文件的元數據信息,靜態成員的存儲位置由方法區轉到了堆內存(heap)中。
不過,不管是JDK8,還是更早的版本中,靜態方法的執行(不僅僅是靜態方法,還有普通的成員方法)都是在棧內存(stack)中進行的。每個線程都會在棧內存中開辟一個棧,在調用方法時,對應的方法都會在執行這個方法的線程的棧中創建一個「棧幀」,棧幀中保存了局部變數表(基本數據類型和對象引用)、操作數棧、動態連接和返回地址等信息。等到方法執行完畢,棧幀被銷毀,對應的內存也將被釋放。

⑵ Java構造函數(方法)存儲在jvm哪個內存里

存放到方法區當中;
new出來的是實例對象,實例對象才是存放在堆當中;
構造函數對應的是<init>方法,方法信息隨著類載入器載入到方法區當中。
棧:
以棧幀為單位,存放的不是方法具體的結構,只是通常一個方法對應一個棧幀,對應的入棧出棧就是棧幀的入棧出棧。棧幀中有局部變數表,操作數棧,方法返回地址,動態鏈接。其中局部變數表存放局部變數,包括形參,非靜態方法默認在第一個索引存放一個this變數;操作數棧用於操作局部變數表和一些值的運算,比如讀取表中變數的值進行運算,或存放相應的值到局部變數表中;方法返回地址則是用於記錄對應方法的下一條指令的地址;動態鏈接是符號引用變成的直接引用。
堆:
存放實例對象,在jdk7開始,還存放靜態變數和字元串常量池
方法區:
存放類元信息,比如完整類名全稱,public,abstract等修飾符,實現的介面有序列表等;方法信息,比如修飾符,返回類型等;JIT代碼緩存,也就是被即時編譯器編譯後的熱點代碼,用於提高性能;域信息,也就是屬性信息,比如修飾符,類型等;運行時常量池,位元組碼文件中常量池的運行時表現,類似符號引用的記錄,不過蘊含的信息更為豐富,而且具有動態性。jdk6及以前,還存放靜態變數,運行時常量池中還存放字元串常量池,到了jdk7則移到了堆中。

閱讀全文

與方法返回地址動態連接存放在哪裡相關的資料

熱點內容
管理的實驗研究方法 瀏覽:124
我的世界怎麼獲得鑽石最快方法 瀏覽:895
強直最好治療方法 瀏覽:310
影視媒介研究方法質化研究 瀏覽:365
凱美瑞aux使用方法 瀏覽:796
用艾葉泡腳的正確方法 瀏覽:56
鍛煉身體有什麼方法 瀏覽:876
新冠肺炎如何用推拿方法輔助治療 瀏覽:316
34約等於的計算方法三年級 瀏覽:785
啞鈴鍛煉肱三頭肌方法 瀏覽:417
口臭是怎麼回事用什麼方法解決 瀏覽:365
鑒別鹵代烴與醚的方法 瀏覽:380
快速收集信息方法 瀏覽:825
小兔子手工製作方法及圖片 瀏覽:442
482除以254的簡便方法 瀏覽:452
PDC酒糟面膜使用方法 瀏覽:417
多台電腦ip地址連接列印機方法 瀏覽:122
搜狐視頻卡解決方法 瀏覽:3
怎麼能快速解酒的方法 瀏覽:717
如何學習內容和方法 瀏覽:146