• 首页
  • 广西高考
  • 福建高考
  • 海南高考
  • 重庆高考
  • 四川高考
  • 云南高考
  • 贵州高考
  • 河南高考
  • 您现在的位置: 主页 > 区别 >
    java堆和栈的区别
    时间:2025-06-13 15:10:48 来源:56看看网

    java堆是在程序运行时,而不是在程序编译时,申请某个大小的内存空间。即动态分配内存,对其访问和对一般内存的访问没有区别。栈是先进后出的,但是于堆而言却没有这个特性,两者都是存放临时数据的地方。

    JVM栈(Java Virtual Machine Stacks): Java中一个线程就会相应有一个线程栈与之对应,因为不同的线程执行逻辑有所不同,因此需要一个独立的线程栈,因此栈存储的信息都是跟当前线程(或程序)相关信息的,包括局部变量、程序运行状态、方法返回值、方法出口等等。每一个方法被调用直至执行完成的过程,就对应着一个栈帧在虚拟机栈中从入栈到出栈的过程。

    堆(Heap): 堆是所有线程共享的,主要是存放对象实例和数组。处于物理上不连续的内存空间,只要逻辑连续即可。

    方法区(Method Area): 属于共享内存区域,存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。

    常量池(Runtime Constant Pool): 它是方法区的一部分,用于存放编译期生成的各种字面量和符号引用。

    了解更多资讯
    版权所有