Java虛擬機將原始數據類型和對象的指針放在棧內存中,將對象放在堆內存中,以一段計數的代碼來看一下堆和棧的開銷差異,第一段j的數據類型是long,第二段的數據數型是Longjava
棧指針
public class CountTest { public static void main(String[] args) { long start=System.currentTimeMillis(); long j=0L; for(int i=100000000;i>0;i--){ j++; } System.out.println(System.currentTimeMillis()-start); System.out.println("j="+j); } }
運行結果code
堆對象
public class CountTest { public static void main(String[] args) { long start=System.currentTimeMillis(); Long j=0L; for(int i=100000000;i>0;i--){ j++; } System.out.println(System.currentTimeMillis()-start); System.out.println("j="+j); } }
運行結果內存
效率差異達到近百倍了虛擬機