java 虛擬機內存分配

內存結構:

Java程序在運行時,需要在內存中分配空間,爲了提高運算效率,有對空間進行了不同區域的劃分,因爲每一片區域都有特定的處理數據方式和內存管理方式

共分配了5塊區域,每區域中處理方式不同

棧內存、堆內存、 方法區、本地方法區、寄存器

棧內存:

  • 用於存儲局部變量
  • 當數據使用完,所佔空間會自動釋放

例如:

int a = 5;
int b = a;
b = 8;

這裏寫圖片描述

堆內存

用於存放數組和對象,通過new建立的實例都存放在堆內存中
情景:分析數組如何存放在內存中

int [] a = new int[3]

這裏寫圖片描述

例如:

int[] a = new int[3]
int[] b = a;
b[1] = 89;
a[1] = 98;
a = null;
問:此時有沒有垃圾數據,答:沒有,a的引用沒有指向了,但是b的還在使用,所以沒有垃圾數據

這裏寫圖片描述

例如:

int[] a = new int[3]
int[] b = new int[3]

只要是new了就會開闢新的內存

這裏寫圖片描述

總結

  • 數組和對象,通過new建立的實例都存放在堆內存中
  • 每個實體都有內存地制值
  • 實體中的變量都有默認初始化值
  • 當實體=null時,實體不在被使用,會在不確定的時間內被垃圾回收器回收
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章