java 栈内存 堆内存,java堆内存和栈内存图解
一.概述
在Java中,内存分为两种,一种是堆栈内存,一种是堆内存。
第二,堆内存
1.什么是堆内存?
堆内存是Java内存的一种。它的功能是在Java中存储对象和数组。当我们创建一个对象或数组时,我们会在堆内存中打开一个空间来存储。
2.堆内存有什么特点?
第一点:堆其实可以看成一个管道,或者说和平时排队买票差不多,所以堆内存的特点是:先进先出,后进后出,也就是你先排队,好的,你先买票。
第二点:堆可以动态分配内存大小,生存期不必提前告诉编译器,因为它是在运行时动态分配内存的,但缺点是由于运行时内存的动态分配,访问速度较慢。
3.新对象在堆中是如何分配的?
由Java虚拟机的自动垃圾收集器管理。
免费视频教程分享:java视频教程
第三,堆栈内存
1.什么是堆栈内存?
堆栈内存是Java的另一种内存,主要用来执行程序,比如对象的基本类型变量和引用变量。
2.堆栈存储器的特性
第一点:堆栈内存就像一个矿泉水瓶。当你把东西放进去的时候,它先沉到底,所以它的特点是:先入后出,后入先出。
第二点:访问速度比堆快,仅次于寄存器,堆栈数据可以共享,但缺点是必须确定堆栈中数据的大小和生存期,缺乏灵活性。
3.堆栈内存分配机制
堆栈内存可以称为一级缓存,由垃圾收集器自动收集。
4.数据共享
示例:
int a=3;
int b=3;第一步:
1.编译器首先处理int a=3;
2.创建对变量a的引用。
3.查看堆栈中是否有值3
4.如果没有找到,存储3,用一个指向3的
第二步是处理:
1.治疗b=3
2.创建对变量b的引用。
3.找到它并直接分配它
第三步是改变:
然后
a=4;方法同上。
a的值变了,a指向4,b的值不变。
PS:如果是两个对象的话,那就不一样了,对象指向的是同一个引用,一个发生改变,另一个也会发生改变。
第四,栈和堆的区别
JVM是基于堆栈的虚拟机。JVM为每个新创建的线程分配一个堆栈。也就是说,对于一个Java程序来说,它的操作是通过操作堆栈来完成的。将线程的状态保存在帧中。JVM栈上的操作只有两种:以帧为单位压栈和弹出栈。
不同点:
1.堆内存用于存储新创建的对象和数组。
2.堆栈内存用于存储方法或局部变量等。
3.堆是先进先出,后进后出。
4.堆栈是后进先出,先进先出。
相同点:
1.都属于Java内存的一种。
2.系统会自动回收,但是对于堆内存,开发者会自动回收。
分享更多相关文章和教程:java Zero Foundation入门以上是java中堆内存和栈内存详细分析的详细内容。请多关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。