(1)Registers(寄存器):在CPU内部,是最快的存储场所,但程序员无法直接控制。
(2)Stack(栈):位于一般的RAM(随机访问内存),速度仅次于Registers。存放基本类型的数据和对象的reference,但对象本身不存放在stack中,而是存放在Heap中。
(3)Heap(堆):也位于RAM,存放用new产生的数据。他比stack好在编译器不需要知道实际在heap中存储数据的大小,也不知道这个空间需要分配多长时间,弹性好,但分配空间的速度比Stack慢很多。
(4)Static storage(静态存储空间):位于RAM,存放在对象中用static定义的静态成员,它是“程序执行期间”一直存在的数据,Java对象本身是不会被分配在这里的。
(5)Constant storage(常量存储空间):存放常量。
(6)NON-RAM存储空间:硬盘等永久存储空间,实现对象的持久化存储。
1,堆是放实例和数组的。
stack是程序运行(或者叫线程更合适)的时候JVM分配给他的,里面有该程序当前的状态。
2,static修饰的变量的特点是new一个对象的时候就分配了内存。而其他是要初始化的时候才分配。也是作为一个变量而已。
阅读(1663) | 评论(0) | 转发(0) |