码迷,mamicode.com
首页 > 编程语言 > 详细

java堆和栈的理解

时间:2017-04-14 00:19:46      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:引用类型   bool   值传递   单位   基本类型   java   引用   new   理解   

栈:stack,它是java运行的单位
堆:heap是存储的单位
java虚拟机中,数据类型分为两种:基本类型和引用类型。
基本类型8种:byte,char,short,int,long,float,double,boolean
引用类型包括:类类型,接口类型,数组。
所以栈中存的是基本类型和局部变量,当代码块中定义一个变量时,java会自动分配内存。当超过变量的作用域后,java会自动释放掉这块内存。
而堆内存的是引用类型,当通过new实例化得到一个引用变量时,java虚拟机会在堆中开辟一个不一定是连续的空间分配给该实例,根据零散的内存地址,实则是根据哈希 算法生成一长串数字指向该实例的物理地址,相当于门牌号起到标识作用。当引用丢失了,会被垃圾回收机制回收,但不是立马释放堆内存。
在这提个问题:java的参数传递到底是值传递还是引用传递呢?
回答这个问题呢,首先要明确,程序运行过程中永远是在栈内运行,所以java的参数传递只能传基本数据类型和对象的引用,不会传对象本身。

java堆和栈的理解

标签:引用类型   bool   值传递   单位   基本类型   java   引用   new   理解   

原文地址:http://www.cnblogs.com/honey-baby/p/6706821.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!