深入理解Java虚拟机学习笔记借鉴.pdf
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
Java 虚拟机(JVM)自动内存管理机制 Java 虚拟机(JVM)自动内存管理机制是 Java 语言的一大特色,它使得 Java 程序员无需手动管理内存,从而提高了开发效率和程序稳定性。JVM 自动内存管理机制主要通过 JVM 的内存模型来实现,它将 JVM 的内存在运行时分为五个部分:虚拟机栈区、堆区、方法区、本地方法栈和程序计数器。 虚拟机栈区是 JVM 的一个私有内存区域,每个线程都需要有一个独立的虚拟机栈,用于存储局部变量、操作数栈、动态链接、方法出口等信息。虚拟机栈的生命周期与线程相同,每个方法从调用直至执行完成的过程,就对应着一个栈帧在虚拟机栈中入栈到出栈的过程。 堆区是 JVM 的最大的一块内存区域,是被线程共享的区域,在虚拟机启动时创建。所有类的实例和数组都是在堆上分配内存的,堆内存由存活和死亡的对象、空闲碎片区组成,对象所占的堆内存是由自动内存管理系统回收。 方法区是 JVM 中的一个非常重要的区域,用于存储已被 JVM 加载的类信息,包括类的名称、方法信息、字段信息、类变量、常量、即时编译器编译后的代码等数据。方法区中有些数据是线程隔离的,但是编译器编译后的代码等数据,是线程共享的。 程序计数器是 JVM 的一个比较小的内存区域,用于指示当前线程所执行的字节码执行到了第几行,每条线程都需要有一个独立的程序计数器,各条线程之间程序计数器互不影响,独立存储,是线程隔离的。 本地方法栈的作用与虚拟机栈区是相似的,他们之间的区别不过是虚拟机栈为虚拟机执行 Java 方法服务,而本地方法栈则为虚拟机使用到的 Native 方法服务。 在 JVM 中,对象的创建过程大致分为四步:第一步,检查类加载;第二步,分配内存;第三步,内存空间初始化;第四步,必要的设置。对象的内存布局在 HotSpot 虚拟机中,对象在内存中存储的布局分为三块:对象头、实例数据和对齐填充。对象头包括两部分信息, 一部分用于存储对象自身的运行时数据,如哈希码、GC分代年龄、锁状态标志、线程持有的锁等;另一部分是类型指针,即对象指向它的类元数据的指针,虚拟机通过这个指针来确定这个对象是哪个类的实例。
剩余15页未读,继续阅读
- pool_engineering2022-09-12资源使用价值高,内容详实,给了我很多新想法,感谢大佬分享~
- 粉丝: 0
- 资源: 11万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助