當前位置:首頁 » 存儲配置 » 靜態變數通常存儲在進程哪個區

靜態變數通常存儲在進程哪個區

發布時間: 2023-01-15 14:22:39

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

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

2. java里的靜態成員變數是放在了堆內存還是棧內

這個要看對象是否為逃逸對象,如果為非逃逸對象,會根據標量替換來把對象分解成若干個被這個方法使用的成員變數所代替,這些代替的成員變數在棧幀或寄存器上分配空間

3. java中,靜態變數存儲在哪個區啊,堆還是棧啊,或者說其他地方,謝謝

首先,java裡面是沒有靜態變數這個概念的,不信你自己在方法裡面定義一個static
int
i
=0;java里只有靜態成員變數。它屬於類的屬性。至於他放在那裡?樓上說的是靜態區。我不知道到底有沒有這個翻譯。但是
深入jvm里是是翻譯為方法區的。虛擬機的體系結構:堆,方法區,本地方法棧,pc寄存器。而方法區保存的就是一個類的模板,堆是放類的實例的。棧是一般來用來函數計算的。隨便找本計算機底層的書都知道了。棧里的數據,函數執行完就不會存儲了。這就是為什麼局部變數每一次都是一樣的。就算給他加一後,下次執行函數的時候還是原來的樣子。

4. static變數存儲在哪裡

該變數在全局數據區分配內存;
未經初始化的靜態全局變數會被程序自動初始化為0(自動變數的值是隨機的,除非它被顯式初始化);
靜態全局變數在聲明它的整個文件都是可見的,而在文件之外是不可見的;
靜態變數都在全局數據區分配內存,包括後面將要提到的靜態局部變數。對於一個完整的程序,在內存中的

代碼區,全局數據區,堆區,棧區
一般程序的由new產生的動態數據存放在堆區,函數內部的自動變數存放在棧區。自動變數一般會隨著函數的退出而釋放空間,靜態數據(即使是函數內部的靜態局部變數)也存放在全局數據區。全局數據區的數據並不會因為函數的退出而釋放空間。細心的讀者可能會發現,Example 1中的代碼中將
static int n; //定義靜態全局變數
改為
int n; //定義全局變數
程序照樣正常運行。
的確,定義全局變數就可以實現變數在文件中的共享,但定義靜態全局變數還有以下好處:
靜態全局變數不能被其它文件所用;
其它文件中可以定義相同名字的變數,不會發生沖突;

5. java靜態變數存儲在哪個區

java程序在內存中的存儲分配情況:

一、堆區:
1.存儲的全部是對象,每個對象都包含一個與之對應的class的信息。(class的目的是得到操作指令)
2.jvm只有一個堆區(heap)被所有線程共享,堆中不存放基本類型和對象引用,只存放對象本身 ujiuye
棧區:
1.每個線程包含一個棧區,棧中只保存基礎數據類型的對象和自定義對象的引用(不是對象),對象都存放在堆區中
2.每個棧中的數據(原始類型和對象引用)都是私有的,其他棧不能訪問
3.棧分為3個部分:基本類型變數區、執行環境上下文、操作指令區(存放操作指令)。 ujiuye
方法區:
1.又叫靜態區,跟堆一樣,被所有的線程共享。方法區包含所有的class和static變數。
2.方法區中包含的都是在整個程序中永遠唯一的元素,如class,static變數。

二、內存分區
而內存分為四個區:stack segment,heap segment,data segment,code segment;
stack 區存放函數參數和局部變數;heap 區存放對象;data 區存放static 的變數或者字元串常量; code 區存放類中的方法;
因此,靜態變數是存放在data區的 !

6. 局部變數,局部靜態變數,全局變數,全局靜態變數分別存放在哪個區

局部變數: 棧區
局部靜態變數:靜態區
全局變數: 靜態區的常量區
全局靜態變數:靜態區

內存分四個區:靜態區,棧區,堆區,代碼區

熱點內容
本地打不開編譯出來的項目包 發布:2025-07-22 07:13:46 瀏覽:478
存儲b和k 發布:2025-07-22 07:13:04 瀏覽:328
etl存儲過程 發布:2025-07-22 06:51:19 瀏覽:548
python變長參數 發布:2025-07-22 06:50:36 瀏覽:483
sql存儲過程工具 發布:2025-07-22 06:47:37 瀏覽:368
c語言ifx1 發布:2025-07-22 06:31:17 瀏覽:174
陳文宇c語言程序設計 發布:2025-07-22 06:27:06 瀏覽:189
小米app下載密碼設置在哪裡 發布:2025-07-22 06:25:24 瀏覽:465
mozilla源碼 發布:2025-07-22 06:12:19 瀏覽:781
達內培訓西安Java 發布:2025-07-22 06:07:08 瀏覽:11