Java中的栈内存和堆内存

2012-11-12

  1.寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制.

  2. 栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字符串常量对象存放在常量池中。)

  3. 堆:存放所有new出来的对象。

  4. 静态域:存放静态成员(static定义的)

  5. 常量池:存放字符串常量和基本类型常量(public static final)。

  6. 非RAM存储:硬盘等永久存储空间

  引用变量是普通变量,定义时所在栈中分配内存,引用变量在程序运行到作用域外释放。而数组和对象本身在堆中分配,即使程序运行到使用new产生数组和对象的语句所在地代码块之外,数组和对象本身占用的堆内存也不会被释放,数组和对象本身占用的堆内存也不会被释放。数组和对象在没有引用变量指向它的时候,才变成垃圾,不能再被使用,但是仍然占着内存, 在随后的一个不确定的时间被垃圾回收器释放掉。这个也是java比较占内存的主要原因。

分享到:
0
相关阅读
友情链接
© 2018 我考网 http://www.woexam.com 中国互联网举报中心 湘ICP备18023104号 京公网安备 11010802020116号
违法和不良信息举报:9447029@qq.com