Java中的堆和栈

Java中的堆和栈

  1. 栈内存
    1. 存放基本数据类型和引用变量
  2. 堆内存
    1. 存放运行时创建的对象
    2. 一般来说,通过new关键字创建出来的对象都放在堆内存中

由于JVM是基于堆栈的虚拟机,而每个Java程序都运行在一个独立的JVM实例上,每一个实例对应一个堆。
一个Java程序内的多个线程也就运行在同一个JVM实例上,因此这些线程之间会共享堆内存,因此,多线程在访问堆中的数据时需要对数据进行同步。

  • 通过对比堆和栈,堆内存主要用来存放对象,栈内存主要用来执行程序
  • 相较于堆,栈的存取速度更快,但是栈的大小和生存周期必须是确定的,因此缺乏一定的灵活性
  • 而堆内存可以运行在运行时动态地分配,生存期不用提前告诉编译器,但这也导致了存取速度的缓慢
原文地址:https://www.cnblogs.com/coderwjq/p/6687606.html