[Java] 堆和栈的区别
2015-09-12 13:17
441 查看
Java中的内存分为两种,堆内存和栈内存
一、栈内存
在函数当中定义的基本类型变量和对象引用变量,java都会给它分配栈内存。一旦离开作用域,这些内存都会被释放掉。
在函数当中的代码块当中定义的变量,java也会给它分配栈空间。
二、堆内存
在java当中使用new关键字创建的内存是在堆上分配的,这些内存是由java虚拟机的垃圾回收器来自动管理的。在栈中可以定义特殊的引用变量指向在堆内存中分配的对象或者数组的首地址,通过这些引用变量来操作堆内存。当没有引用指向这些堆中的内存的时候,这些内存就变为了不可访问的内存,也就是变为了垃圾,但是此时并不会被回收。GC垃圾回收器,会在一个不确定的时间将这些垃圾进行回收。
[1] http://blog.csdn.net/huozhicheng/article/details/6575960
一、栈内存
在函数当中定义的基本类型变量和对象引用变量,java都会给它分配栈内存。一旦离开作用域,这些内存都会被释放掉。
在函数当中的代码块当中定义的变量,java也会给它分配栈空间。
二、堆内存
在java当中使用new关键字创建的内存是在堆上分配的,这些内存是由java虚拟机的垃圾回收器来自动管理的。在栈中可以定义特殊的引用变量指向在堆内存中分配的对象或者数组的首地址,通过这些引用变量来操作堆内存。当没有引用指向这些堆中的内存的时候,这些内存就变为了不可访问的内存,也就是变为了垃圾,但是此时并不会被回收。GC垃圾回收器,会在一个不确定的时间将这些垃圾进行回收。
[1] http://blog.csdn.net/huozhicheng/article/details/6575960
相关文章推荐
- Spring揭秘读书笔记 八 数据访问异常体系
- Spring揭秘读书笔记 八 数据访问异常体系
- <Java Web学习初级阶段>表格实现简单的注册页面
- 关于Java中 Class.forName();
- struts自定义拦截器配置
- java中volatile相关
- volatile关键字解析
- 数字使用相应的加密策略传递一个字符串后Java实现代码
- 对IDE依赖的一些看法
- 如何使用IntelliJ IDEA 14创建基于Maven3的Java Web Project
- Spring Web MVC处理请求的流程
- javah javac 不是内部或外部命令 解决方法
- mit java open course assignment #2
- 【springmvc+mybatis项目实战】杰信商贸-11.购销合同业务
- Eclipse+超快速的模拟器Genymotion开展Android申请书(第一步:安装和配置Genymotion)
- SpringMVC+mybatis+spring整合教程
- struts2常用标签总结
- java接口
- Java的五个问题解决方案
- springMVC注解的简单使用