Java虚拟机将原始数据类型和对象的指针放在栈内存中,将对象放在堆内存中,以一段计数的代码来看一下堆和栈的开销差别,第一段j的数据类型是long,第二段的数据数型是Long
栈
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);
}
}
运行结果
堆
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);
}
}
运行结果
效率差别达到近百倍了