首頁 Java Java入門 棧記憶體、堆疊記憶體與方法區的關係分析

棧記憶體、堆疊記憶體與方法區的關係分析

Jul 30, 2020 pm 04:37 PM
堆疊記憶體

棧記憶體、堆疊記憶體與方法區的關係分析

先看一下程式碼:

(推薦教學:java入門教學

package cn.liang.jvm;
    public class SimpleHeap {	
            private int id;	
            public SimpleHeap(int id){		
                this.id = id;
	    }	
        public void show(){
	    System.out.println("My ID is " + id);
	}	
        public static void main(String[] args) {
		SimpleHeap s1 = new SimpleHeap(1);
		SimpleHeap s2 = new SimpleHeap(2);
		s1.show();
		s2.show();
	}
}
登入後複製

關係圖:

棧記憶體、堆疊記憶體與方法區的關係分析

(視訊教學推薦:java視訊教學

  • #SimpleHeap實例本身分配在堆記憶體中

  • 描述SimpleHeap類別的資訊存放在方法區

  • #main()函數中s1和s2局部變數存放在Java棧記憶體中,並指向堆記憶體的兩個實例

堆區:

1、儲存的全部是對象,每個物件都包含一個與之對應的class的資訊。 (class的目的在於得到操作指令)

2、jvm只有一個堆區(heap)被所有執行緒共享,堆中不存放基本型別和物件引用,只存放物件本身。

堆疊區:

1、每個執行緒包含一個堆疊區,堆疊中只保存基礎資料型別的物件和自訂物件的參考(不是物件),物件都存放在堆區中

2、每個堆疊中的資料(原始型別和物件參考)都是私有的,其他堆疊不能存取。

3、堆疊分為3個部分:基本類型變數區、執行環境上下文、操作指令區(存放操作指令)。

方法區:

1、又叫靜態區,跟堆一樣,被所有的執行緒共用。方法區包含所有的class和static變數。

2、方法區包含的都是在整個程式中永遠唯一的元素,如class,static變數。

以上是棧記憶體、堆疊記憶體與方法區的關係分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)