Java 程式執行過程的記憶體分析

2021-09-20 08:57:45 字數 784 閱讀 2725

記憶體分析先知

棧:1、每個執行緒私有,不能實現執行緒間的共享!

2、區域性變數放置於棧中。

3、棧是由系統自動分配,速度快!棧是乙個連續的記憶體空間!

堆:1、放置new出來的物件!

2、堆是乙個不連續的記憶體空間,分配靈活,速度慢!

方法區:

1、被所有執行緒共享!

2、用來存放程式中永遠不變或唯一的內容。(類**資訊、靜態變數、字串常量)

注:常量池具有共享的機制,不同類的常量池之間共享資料。比如:student 類常量池下有個 "老葉"字串常量,那麼當 test 類中用到"老葉"這個字串常量時就會去方法區的其他類的常量池中找,剛好 student 類有,所以它直接就引用student 類的"老葉"

開始分析

student 類

public class student 

public void sayhello(string sname)

}

test1類

重點:注意看**裡的注釋,我把每一條的語句的執行過程都做了很詳細的講解

public class test1 

}

這是對上面 test1 類執行**的記憶體分析圖!!!

程式執行的記憶體分析過程

1.將show方法存入方法區,構造person方法,初始化變數name age,構造方法移出棧 2.給main方法建立乙個棧,給name,age分別賦值,呼叫show方法,此時將物件的位址0x10傳遞給p1,p1.show 棧被移出 3.再次構造person方法,初始化變數name age,構造方法...

Java程式的執行過程

what will be printed when you execute the following code?classc classa a string s classtestextendsa publicstaticvoidmain string args 以上是乙個案列。開始的時候,我以為...

Java基礎 程式執行過程中的記憶體管理

例如我們寫的乙個程式,存放在硬碟的某個區域,如果不執行此程式,它就會默默的存放在那裡。當我們執行它時,它執行的過程如下 1.將程式load到記憶體區域 2.作業系統自己會找到程式的main方法,從main開始執行程式 3.當程式開始執行時,程式中的資料會被記憶體分類管理起來。基本有四類記憶體管理 h...