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

成員方法存放在哪裡

發布時間: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)中進行的。每個線程都會在棧內存中開辟一個棧,在調用方法時,對應的方法都會在執行這個方法的線程的棧中創建一個「棧幀」,棧幀中保存了局部變數表(基本數據類型和對象引用)、操作數棧、動態連接和返回地址等信息。等到方法執行完畢,棧幀被銷毀,對應的內存也將被釋放。

閱讀全文

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

熱點內容
管路加熱帶安裝方法 瀏覽:744
狗窩圖片製作方法手工 瀏覽:746
紅a卡鑒別方法 瀏覽:934
白斑有效治療方法 瀏覽:701
素描石膏像的教學方法 瀏覽:708
三年級橫式計算方法 瀏覽:578
8個字的研究方法 瀏覽:955
如何辨別瑪瑙真假最簡單方法 瀏覽:888
分析勝利最好的方法 瀏覽:643
健忘症用什麼方法治好 瀏覽:855
飛利浦凈化器怎麼調試方法 瀏覽:828
最簡單的蜜蜂采蜂方法 瀏覽:7
水沫玉真假鑒別方法 瀏覽:140
盡快懷孕的方法視頻 瀏覽:220
25x48乘法簡便方法 瀏覽:297
健身敏捷性訓練方法 瀏覽:452
俠白的簡便定位方法 瀏覽:645
韓國艾草暖宮貼使用方法 瀏覽:504
安全帶在哪裡安裝方法 瀏覽:569
用電腦賺大錢的方法 瀏覽:543