Java堆栈的区别

原创 2016年06月01日 13:53:26

堆:存放类类型,用new创建的,垃圾自动回收机制负责回收,速度慢。

(1) 堆是一个“运行时”数据区,类的实例化对象 是从堆上去分配空间的,堆上的 空间都是通过new去创建的 。

(2) 堆是动态分配内存大小的,即程序运行时分配的。

(3) 堆空间的内存读取比较慢。

new String("hello");  new出来的对象都是是存放在堆中。


栈:存放基本数据类型,速度快。

(1) 栈存放基本数据类型(byte,short,int ,long,float,double,boolean,char) 和对象句柄。

(2) 数据值共享,这是jvm栈的数据存取方式,int a = 10; int b  = 10; a 、b指向的栈空间地址是同一个。

jvm处理的逻辑是,执行int a = 10; 在栈上创建一个变量作为a的引用,然后再在栈上查找10的地址,如果有就将a指向该地址,没有就存起来10的这个地址,

(3) 相比于堆,栈的速度更快。

(4) 方法结束后方法中的栈数据就清除了。


在栈中,只保存有基本类型的变量和对象引用。

引用所指向的对象保存在堆中。(引用可能为Null值,即不指向任何对象)。


例:

String str1 = "abc"; 
String str2 = new String("abc"); 
System.out.println(str1==str2); //false 
创建了两个引用。创建了两个对象。两个引用分别指向不同的两个对象。



版权声明:本文为博主原创文章,未经博主允许不得转载。

Java之美之JVM 中堆栈的区别

一。------------------------------------------------------------ 堆--用new建立,垃圾自动回收负责回收 1、堆是一个"运行时...
  • wangjia55
  • wangjia55
  • 2013年04月07日 23:50
  • 2412

java中堆和堆栈的区别及实例

1.栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。   2. 栈的优势是,存取速度比堆要快,仅次于...
  • truelove12358
  • truelove12358
  • 2015年07月21日 11:10
  • 915

Java中的基础----堆与栈的介绍、区别

堆和栈都是Java中常用的存储结构,都是内存中存放数据的地方。 栈:基本数据类型的变量(int、short、long、byte、float、double、boolean、char等)以及对象的引用变量...
  • Emira_J
  • Emira_J
  • 2016年04月24日 11:16
  • 15258

堆栈的区别,很详细

C++中堆和栈的区别,自由存储区、全局/静态存储区和常量存储区        文章来自一个论坛里的回帖,哪个论坛记不得了!       在C++中,内存分成5个区,他们分别是堆、栈、自由存储区...
  • l1l2l3q1q2q3
  • l1l2l3q1q2q3
  • 2017年04月20日 21:39
  • 329

【C#】堆、栈和堆栈的区别

导读:今天看视频,就看到了堆、栈这一块了。顿时就来劲儿了,为什么呢,...
  • u013034889
  • u013034889
  • 2014年10月24日 14:24
  • 2279

什么是“堆”,"栈","堆栈","队列",它们的区别?

转自:http://jingyan.baidu.com/article/6c67b1d6a09f9a2786bb1e4a.html 博主总结: 栈=堆栈(栈的别名)!=堆 堆:什么是堆...
  • DT2131
  • DT2131
  • 2017年03月11日 13:05
  • 1459

栈,堆栈特点与区别

1. 栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。     2. 栈的优势是,存取速度比堆要快,仅...
  • qw_xingzhe
  • qw_xingzhe
  • 2014年06月28日 17:06
  • 3228

Java中equal和==的区别

equal和==均表示相等的意思,但是它们进行实际的相等的判定的时候,却有
  • lin446591998
  • lin446591998
  • 2014年09月15日 14:49
  • 607

操作系统中栈与堆的理解

在数据结构中栈具有先进后出的(First in Last Out FIFO)的特性,而在计算机系统中,栈是一个具有以上属性的动态内存区域。程序可以将数据压入栈中,也可以将数据从栈中弹出。压栈的操作使得...
  • xiaokugua_250
  • xiaokugua_250
  • 2015年01月16日 14:55
  • 1223

堆栈,堆栈,堆和栈的区别

非本人作也!因非常经典,所以收归旗下,与众人阅之!原作者不祥! 堆和栈的区别 一、预备知识—程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— ...
  • FrankieWang008
  • FrankieWang008
  • 2014年05月19日 13:55
  • 2170
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java堆栈的区别
举报原因:
原因补充:

(最多只允许输入30个字)