1. 程式人生 > >JVM執行時資料區域學習

JVM執行時資料區域學習

JVM執行時資料區域思維導圖

注:
    1.本地方法棧和虛擬機器棧並非所有的JVM都有區分,不是強制規定,HotSpot中本地方法棧和虛擬機器棧是合在一起的;
    2.方法區不等於永久代,HotSpot使用永久代來實現方法區,但在其他的JVM中並不適用;
    3.一般來說,物件例項和陣列都在堆上分配但是不是絕對的.隨著JIT編譯器的發展與逃逸分析技術逐漸成熟,棧上分配,標量替換優化技術將會導致一下微妙的變化.參考深入JVM虛擬機器,參考hollischuang大神的文章:

物件和陣列並不都是在堆上分配記憶體的;
    4.堆記憶體 = 新生代(1/3) + 老年代(2/3);新生代 = Eden + from survivor + to survivor.
    5.永久代屬於HotSpot,JDK1.8廢棄了永久代,取而代之的是Metaspace(元空間),元空間使用的是直接記憶體,不使用虛擬機器記憶體;
    6.在HotSpot中字串常量池在jdk1.8由原來的方法區(永久代)轉移到java堆中.