導航:首頁 > 安裝方法 > 成員方法存放在哪裡

成員方法存放在哪裡

發布時間:2025-01-04 15:32:21

⑴ java中成員變數都儲存在棧內存中嗎

一個完整的Java程序運行過程會涉及以下內存區域:x0dx0a寄存器:JVM內部虛擬寄存器,存取速度非常快,程序不可控制。x0dx0a棧:保存局部變數的值,包括:1.用來保存基本數據類型的值;2.保存類的實例,即堆區對象的引用(指針)。也可以用來保存載入方法時的幀。x0dx0a堆:用來存放動態產生的數據,比如new出來的對象。注意創建出來的對象只包含屬於各自的成員變數,並不包括成員方法陵猛。因為同一個類的對象擁有各自的成員變數,存儲在各自的堆中,但是他們共享該類的方法,並不是每創建一個對象就把成員方法復制一次。x0dx0a常量池:JVM為每個已載入的類型維護一個常量池,常量池就是這個類型用到的常量的一個尺冊橋有序集合。包括直接常量(基本類型,String)和對其他類型、方法、欄位的符號引用。池中的數據和數組一樣通過索引訪問。由於常量池包含了一個類型所有的對其他類型、方法、欄位的符號引用,所以常量池在Java的動態鏈接中起了核心作用。常量池存在於堆中。x0dx0a代碼段:用來存放從硬碟上讀取的源程序代碼。x0dx0a數據段:用來存放static定義的靜態成員。x0dx0ax0dx0a對於局部變數,如果是基本類型,會把值直接存儲在棧;如果是引用類型,比如String s = new String("william");會把其對象存儲在堆姿神,而把這個對象的引用(指針)存儲在棧。x0dx0a再如x0dx0aString s1 = new String(「william」);x0dx0aString s2 = s1;x0dx0as1和s2同為這個字元串對象的實例,但是對象只有一個,存儲在堆,而這兩個引用存儲在棧中。x0dx0ax0dx0a類的成員變數在不同對象中各不相同,都有自己的存儲空間(成員變數在堆中的對象中),基本類型和引用類型的成員變數都在這個對象的空間中,作為一個整體存儲在堆。而類的方法卻是該類的所有對象共享的,只有一套,對象使用方法的時候方法才被壓入棧,方法不使用則不佔用內存。

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

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

閱讀全文

與成員方法存放在哪裡相關的資料

熱點內容
期貨賬戶每日計算方法 瀏覽:236
上海翻斗式雨量計測量方法 瀏覽:606
手臂增壯訓練方法 瀏覽:309
白酒鑒定技巧和方法 瀏覽:956
學校解決大氣污染的方法 瀏覽:232
哈聲訓練方法 瀏覽:111
古詩詞文本解讀方法研究 瀏覽:903
天津市落戶有哪些方法 瀏覽:213
簡單收口雙肩包的製作方法 瀏覽:74
君子蘭的圖片及養殖方法 瀏覽:937
平板下載密碼設置在哪裡設置方法 瀏覽:469
35寸硬碟連接線製作方法 瀏覽:254
手機養蝴蝶的方法視頻 瀏覽:307
食用油二次利用的方法 瀏覽:538
肺部積水應該採取哪些方法治療 瀏覽:609
譜子快速背誦方法 瀏覽:956
手機拍攝美食的正確方法 瀏覽:522
手機連接功放音響的方法 瀏覽:737
握魚竿正確方法圖解 瀏覽:323
三十烷醇使用方法 瀏覽:853