Jvm 堆&栈的理解(小白必看)

2021/4/13 10:25:13

本文主要是介绍Jvm 堆&栈的理解(小白必看),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Jvm 堆&栈的理解

JVM里的“堆”(heap)特指用于存放Java对象的内存区域

要注意,这个“堆”并不是数据结构意义上的堆(Heap (data structure),一种有序的树),而是动态内存分配意义上的堆——用于管理动态生命周期的内存区域

JVM的堆被同一个JVM实例中的所有Java线程共享。它通常由某种自动内存管理机制所管理,这种机制通常叫做“垃圾回收”(garbage collection,GC)

JVM里的“栈”( stack )特指用于存放Java方法 ,基本类型的变量,和对象的引用变量 ,的内存区域

特点是 先进后出

方法执行后,方法会从栈里出去,释放

存取速度比堆要快,仅此于寄存器,栈数据可以共享,但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。

栈和堆的区别

JVM是基于堆栈的虚拟机.JVM为每个新创建的线程都分配一个堆栈.也就是说,对于一个Java程序来说,它的运行就是通过对堆栈的操作来完成的。堆栈以帧为单位保存线程的状态。JVM对堆栈只进行两种操作:以帧为单位的压栈和出栈操作。

  • 差异

1.堆内存用来存放由new创建的对象和数组。
2.栈内存用来存放方法或者局部变量等
3.堆是先进先出,后进后出
4.栈是后进先出,先进后出

  • 相同

1.都是属于Java内存的一种
2.系统都会自动去回收它,但是对于堆内存一般开发人员会自动回收它

欢迎访问个人博客http://www.jkraise.top



这篇关于Jvm 堆&栈的理解(小白必看)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程