java内存知识
java对内存的分类。
(网上资料)程序中用来存放数据的内存分为四块,另有一块用于存放代码
1.堆:存放所有new出来的对象(我们知道java并没有全局变量这个概念,有人是把它单独放在properties文件使用,充当全局变量的作用.)
2.栈:存放基本类型的变量数据和对象的引用。对象引用即指向对象值的地址存在栈中,而对象值则存放在堆中或者常量池中(字符串常量对象存放在常量池中)。
3.常量池:存放基本类型常量和字符串常量。
String是一个特殊的包装类数据。可以用:
String str = new String("abc");
String str = "abc";
两种的形式来创建,第一种是用new()来新建对象的,它会在存放于堆中。每调用一次就会创建一个新的对象。
而第二种是先在栈中创建一个对 String类的对象引用变量str,然后查找常量池中有没有存放"abc",如果没有,则将"abc"存放进常量池,并令str指
向”abc”,如果已经有”abc” 则 直接令str指向“abc”。
在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配。
栈和常量池中的对象可以共享,堆中的对象不可以共享。
堆内存用来存放由new创建的对象和数组。