天天看點

Java虛拟棧和Java堆詳解---jvm虛拟機(一)

Jvm記憶體分别有java堆,java虛拟棧,java本地棧,方法區,程式計數器。

程式計數器:jvm加載的時候,記錄每個線程特地的位子,目前線程的行數訓示器,對多線程尤為重要,每個線程都有自己的pc,友善管理上下文的切換。

Java堆:java記憶體占的最大,gc回收最頻繁的地方,存放執行個體對象和數組,線程共享的,因為線程共享,是以new對象的時候需要加鎖。

Java虛拟棧:存放對象的引用,基本資料類型,方法。

本地虛拟棧:和java虛拟棧類似,主要存放本地的對象引用,基本資料類型,方法。

方法區:存放jvm加載完之後類的基本資訊,方法,運作時常量,其中這裡面會配置設定記憶體給運作時常量池,主要在裡面存放運作時常量和方法。

相信這些大家都并不陌生,熟記于心,兩個new的對象為何不相等呢,因為對象在java堆,兩個對象存儲的記憶體位址值不一緻。

下面來看代碼:

Java虛拟棧和Java堆詳解---jvm虛拟機(一)

首先建立了個user2對象,指向java堆的位址值,放入list引用裡,之後再fillData裡吧目前user2對象放入新的list,list指向同一個java堆裡的位址值,是以他們是相同的。