面向對象內存分析

 

Java虛擬機的內存可以分爲三個區域:

棧 stack

堆 heap

方法區 method area

 

1.棧描述的是方法執行的內存模型。每個方法被調用都會創建一個棧幀(存儲局部變量、操作數、方法出口等)

2.JVM爲每個線程創建一個棧,用於存放該線程執行方法的信息(實際參數、局部變量等)

3.棧屬於線程私有,不能實現線程間的共享

4.棧的存儲特性是“先進後出,後進先出”

5.棧是由系統自動分配,速度快。棧是一個連續的內存空間

 

1.堆用於存儲創建好的對象和數組(數組也是對象)

2.JVM只有一個堆,被所有線程共享

3.堆是一個不連續的內存空間,分配靈活,速度慢

 

方法區(又叫靜態區)

1.JVM只有一個方法區,被所有線程共享

2.方法區實際也是堆,只是用於存儲類、常量相關的信息

3.用來存放程序中永遠是不變或唯一的內容(類信息[class對象]、靜態變量、字符串常量等

 

 


public class SxtStu {
	
	//屬性fields
	int  id;
	String  sname;
	int  age;
	
	Computer  comp;  //計算機
	
	//方法
	void  study(){
		System.out.println("我在認真學習!!,使用電腦:"+comp.brand);
	}
	
	void  play(){
		System.out.println("我在玩遊戲!王者農藥!"); 
	}
	
	//構造方法。用於創建這個類的對象。無參的構造方法可以由系統自動創建。
	SxtStu(){
		System.out.println("調用了無參的構造方法!");
	}
	
	//程序執行的入口,必須要有
	//javac  Sxtstu.java   ,   java Sxtstu
	public static void main(String[] args) {
		SxtStu  stu = new SxtStu();   //創建一個對象
		stu.id=1001;
		stu.sname= "高淇";
		stu.age = 18;
		
		Computer  c1 = new Computer();
		c1.brand = "聯想";
		
		stu.comp = c1;
		
		stu.play();
		stu.study();
		
	}
}

class  Computer {
	String  brand;
}


如上代碼,分析圖如下

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章