java - Stack栈和Heap堆的区别
2024-10-15 03:56:56
首先分清楚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)和对象句柄。 ”
最新文章
- Sublime文本排序&;查找重复行&;删除重复行
- SVN版本控制系统
- POJ2743Mobile Computing[DFS 状态压缩]
- 深入理解java虚拟机【Java虚拟机类生命周期】
- Python-面向对象编程
- win7/ubuntu双系统下,如何恢复成win7引导及卸载ubuntu
- 低级错误之Hbm中类型不一致错误
- javascript闭包详解
- windows7 'telnet'不是内部或外部命令--转载
- Nuget 相关
- 在配置WCF服务的时候出现的错误总结
- ajax完成list无刷新返回
- UiAutomator源码分析之UiAutomatorBridge框架
- Python之深浅拷贝&;函数
- Spring+SpringMVC+MyBatis+easyUI整合优化篇(十一)数据层优化-druid监控及慢sql记录
- 论文笔记 Spatial contrasting for deep unsupervised learning
- input响应慢问题解决办法
- toString
- mybatis的if判断integer
- 如何新建PDF文档,新建PDF文档的方法
热门文章
- AndroidSQLite多出一个(db.journal文件原因)
- 开发Protege插件时,出现打开Protege后并不显示插件的原因
- bwa用法
- ORA-20000:ORU-10027:buffer overflow,limit of 2000 bytes.
- (转)java缓存技术,记录
- codeforces 704A (队列模拟) Thor
- flask-admin章节五:wtforms FormField超级炫酷使用
- ubuntu安装jdk
- .Net WinForm下配置Log4Net(总结不输出原因)
- 实战录 | Kafka-0.10 Consumer源码解析