JVM的内存结构
温馨提示:
本文最后更新于 2022年12月16日,已超过 874 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我。
JVM的内存结构
堆内存: jvm里最大的区域,是线程共享的,存储的是对象实例。
方法区 :方法区也是线程共享的,主要存储的是jvm加载的类信息,常量、静态变量、即时编译器编译后的代码等数据
程序计数器 :一块较小的内存空间,它的作用是标记当前线程执行到什么位置。
栈内存 :每个线程独立一个区域,生命周期和线程相同,主要存储线程执行的方法的局部变量,方法出口灯信息。
JVM1.7 和 1.8 内存模型的区别
Java7 Hotspot中方法区位于永久代中。同时,永久代和堆是相互隔离的,但它们使用的物理内存是连续的。
Java8 永久代的垃圾收集是和老年代捆绑在一起的,因此无论谁满了,都会触发永久代和老年代的垃圾收集。
JVM中的堆栈模型
数据分为基本数据类型(String, Number, Boolean, Null, Undefined,Symbol)和对象数据类型。
基本数据类型的特点:直接存储在栈(stack)中的数据
引用数据类型的特点:存储的是该对象在栈中引用,真实的数据存放在堆内存里
引用数据类型在栈中存储了指针,该指针指向堆中该实体的起始地址。当解释器寻找引用值时,会首先检索其在栈中的地址,取得地址后从堆中获得实体。
正文到此结束
- 本文标签: JVM
- 本文链接: http://www.ityoulove.com/article/27
- 版权声明: 本文由崔健宇原创发布,转载请遵循《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权