美文网首页
JVM内存结构:堆、栈和方法区

JVM内存结构:堆、栈和方法区

作者: 小沐子_IT | 来源:发表于2018-09-05 21:49 被阅读0次

    堆:先进先出,存放在二级缓存中,速度慢,只有一个,被所有线程共享,用来存放对象和数组,可以动态分配内存大小,生命周期不确定。(灵活、速度慢)

    栈:后进先出,存放在一级缓存中,速度快,每个线程都包含一个栈区,数据私有,其他栈不能访问,用来执行程序,不能动态分配内存,生命周期确定。(速度快、不灵活)

    方法区/静态区:被所有线程共享,存放所有的方法和静态变量,全局变量与静态变量放一起,初始化与未初始化的分开。

    栈的组成:基本类型变量区、执行环境上下文、操作指令区(存放操作指令)

    为什么要有堆和栈?这样设计有什么好处?

    ①Java自动管理堆和栈,程序员不能直接地设置栈和堆。

    ②Java的堆是一个运行时数据区。堆是由JVM的垃圾回收器自动管理的。堆的优势是可以在程序运行时,动态地分配内存

    大小,但是正是由于这个原因,它的存取速度较慢。

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

    相关文章

      网友评论

          本文标题:JVM内存结构:堆、栈和方法区

          本文链接:https://www.haomeiwen.com/subject/zsbzwftx.html