加载中…
  
博文
(2007-06-21 19:08)
分类: 数据仓库
 在Thinking in java里,列举了Java的六种存储类型
1.寄存器
编写过汇编程序的应该对寄存器非常熟悉,那时候用的ax,bx,cx,dx等等。寄存器在CPU里面,所以速度特别快,但是数量非常有限。在java中无法直接和寄存器打交道,不过在c中是可以声明寄存器变量的。

2.栈空间
写过汇编的肯定感到非常亲切,在汇编程序里不就是压栈和出栈吗?有一个指针控制栈空间,分配空间是栈指针上移,就是push操作,释放空间指针下移,就是pop操作。当然C和C++也主要是通过栈分配空间的。因为只要压栈和出栈,所以速度特别快。java中的对象引用是通过栈分配的,而java对象不是通过栈分配的,这也是java效率相对差一些的原因吧。通过栈分配空间有一个限制就是必须在编译时确定空间大小,也就是程序运行前就应该可以知道运行时内存的情况。比如mov ax,4这条指令占用多少个字节在编译时是确定的。

3.堆空间
就是一个大的内存块,需要的时候就申请分配,java中的对象都是在堆中非配的。但是堆空间的回收是比较麻烦的,所以JVM的回收算法都比较复杂。但是如果堆空间比较大,也就是内存没有面临用完的话,JVM一般不会启动垃圾回收器。这种情况下堆的效率和

  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有