java中堆和栈内存的区别
来源:互联网 发布:淘宝怎么联系不了卖家 编辑:程序博客网 时间:2024/06/14 14:46
在java中,堆和栈都是内存中存放数据的地方。变量分成基本数据类型和引用类型,基本数据类型的变量(例如 int、long、byte、float、double、boolean、char)已经对象的引用变量,其内存都分配在栈上,变量出了作用域就会自动释放。而引用类型的变量,其内存分配在堆上或者常量池(例如字符串常量和基本数据类型常量)中,需要通过new等方式进行常见。
栈内存
栈内存主要用来存放基本数据类型与引用变量。栈内存的管理时通过压栈和弹栈的操作来完成的。以栈帧为基本单位来管理程序的调用关系,每当有函数调用时,都会通过压栈的方式常见新的栈帧,每当方式调用结束后都会通过弹栈的方式释放栈帧。
堆内存
堆内存用来存放运行时创建的对象。 一般来讲,通过new关键字创建出来的对象都在存在堆内存中。由于JVM是基于堆栈的虚拟机,而每一个java程序都运行在一个单独的jvm实例上,每一个实例唯一对应一个堆,一个java程序内的多个线程也就运行在同一个JVM实例上,因此这些线程之间就会共享内存。所以多线程在访问堆中的数据时需要对数据进行同步。
从堆和栈功能以及作用上来比较:堆主要用来存储对象,栈主要用来执行程序的。相对于栈,堆的存储速度更快,但栈的大小和生存周期必须时确定的,因此缺乏一定的灵活性。而堆却可以在运行时的那个太地分配内存,生存期不用提前告诉编辑器,但这也导致了其存取速度的缓慢。
阅读全文
0 0
- Java中堆内存和栈内存的区别
- java中堆内存和栈内存的区别
- Java 中栈内存和堆内存的区别
- Java中堆内存和栈内存的区别
- java中堆内存和栈内存的区别
- java中栈内存和堆内存的区别
- Java中堆内存和栈内存的区别
- Java中堆内存和栈内存的区别
- java中堆内存和栈内存的区别
- Java中堆内存和栈内存的区别
- java中堆内存和栈内存的区别
- java 内存中 栈 和 堆的区别
- java中栈和堆内存的区别
- java中栈和堆内存的区别
- java中堆和栈内存的区别
- 内存中堆和栈的区别
- 内存中堆和栈的区别
- 内存中栈和堆的区别
- TDD
- JavaScript基础(4)之location
- MFC使用ODBC连接MySQL数据库
- 随想| Continue
- 2017年上海金马五校程序设计竞赛(网上资格赛)J : Raising Bacteria
- java中堆和栈内存的区别
- HDU5328-Problem Killer
- Hello World MyCSDN
- Java基础之线程
- Eclipse 自动格式化代码的几种方法
- Java中常量写到接口中还是类中
- logistic回归
- 浮点数在内存中的表示移位存储难点的理解
- TensorFlow使用PyCharm编辑器进行配置和编译在Windows下