java 堆、栈区别
来源:互联网 发布:js注释 summary 编辑:程序博客网 时间:2024/06/08 18:44
首先分清楚Stack,Heap的中文翻译:Stack—栈,Heap—堆。
在中文里,Stack可以翻译为“堆栈”,所以我直接查找了计算机术语里面堆和栈开头的词语:
堆存储: heapstorage 堆存储分配: heapstorage allocation 堆存储管理: heap storage management
栈编址: stack addressing 栈变换:stack transformation 栈存储器:stack memory 栈单元: stack cell
接着,总结在Java里面Heap和Stack分别存储数据的不同。
Heap(堆) Stack(栈) JVM中的功能 内存数据区 内存指令区 存储数据 对象实例(1) 基本数据类型, 指令代码,常量,对象的引用地址(2)
1. 保存对象实例,实际上是保存对象实例的属性值,属性的类型和对象本身的类型标记等,并不保存对象的方法(方法是指令,保存在stack中)。
对象实例在heap中分配好以后,需要在stack中保存一个4字节的heap内存地址,用来定位该对象实例在heap中的位置,便于找到该对象实例。
对象实例在heap中分配好以后,需要在stack中保存一个4字节的heap内存地址,用来定位该对象实例在heap中的位置,便于找到该对象实例。
2. 基本数据类型包括byte、int、char、long、float、double、boolean和short。
函数方法属于指令.
函数方法属于指令.
=======================
引用网上广泛流传的“Java堆和栈的区别”里面对堆和栈的介绍;
"Java 的堆是一个运行时数据区,类的(对象从中分配空间。这些对象通过new、newarray、anewarray和multianewarray等指令建立,它们不需要程序代码来显式的释放。堆是由垃圾回收来负责的,堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,因为它是在运行时动态分配内存的,Java的垃圾收集器会自动收走这些不再使用的数据。但缺点是,由于要在运行时动态分配内存,存取速度较慢。"
“栈的优势是,存取速度比堆要快,仅次于寄存器,栈数据可以共享。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。栈中主要存放一些基本类型的变量(,int, short, long, byte, float, double, boolean, char)和对象句柄。 ”
可见,垃圾回收GC是针对堆Heap的,而栈因为本身是FILO - first in, last out. 先进后出,能够自动释放。 这样就能明白到new创建的,都是放到堆Heap!
(3)当比较包装类里面的数值是否相等时,用equals()方法;当测试两个包装类的引用是否指向同一个对象时,用==。
(4)由于String类的immutable性质,当String变量需要经常变换其值时,应该考虑使用StringBuffer类,以提高程序效率。
0 0
- java 堆、栈区别
- java 堆 和 栈 区别
- java堆和栈区别
- Java 堆和栈区别
- java 堆和栈区别
- Java中堆--栈区别
- Java堆、栈的区别
- java堆和栈区别
- Java堆和栈的区别
- Java中堆和栈的区别
- Java中堆和栈的区别
- Java-堆和栈的区别
- Java堆与栈的区别
- Java中堆和栈的区别
- Java堆和栈的区别
- Java堆和栈的区别
- Java中堆和栈的区别
- java堆和栈的区别
- 孙权劝学导学案
- 回溯法八皇后问题
- week 2
- j2se,j2ee,j2me区别
- Ubuntu配置文件/etc/profile说明
- java 堆、栈区别
- 回溯法素数环
- 笔试题常考--字符指针与动态字符数组
- tableview textfield tableviewheader footer同时存在问题情况记录
- ACMjava简单枚举除法,分数拆分,双基回文数,最大乘积
- cocos2d-x win8下的环境配置和建立项目
- CvCreateImage函数说明
- Flex——BlazeDS开发指南
- 菜鸟之php+mysql环境搭建