导图社区 Jvm虚拟机总结图谱
虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机有自己完善的硬体架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。本思维导图详细介绍了Jvm的相关知识点,感兴趣的小伙伴可以收藏起来慢慢看呀!
Java干货思维导图分享!想学Java却不知道在哪学起?我这有份Java并发编程全面的知识体系思维导图。让你们更方便更全观的去了解去学习,赶紧收藏学习起来吧!
社区模板帮助中心,点此进入>>
互联网9大思维
组织架构-单商户商城webAPP 思维导图。
域控上线
python思维导图
css
CSS
计算机操作系统思维导图
计算机组成原理
IMX6UL(A7)
考试学情分析系统
Java虚拟机高级特性
Java内存区域与内存溢出异常
程序计数器
作用:当前的线程所执行的字节码的行号指示器
特点:每个线程都有一个属于自己的程序计数器,各个线程之间互不影响,独立存储 属于线程的私有的变量
执行情况
1、执行Java方法 这个计数器记录的是正在执行的虚拟机的字节码的指令地址
2、如果执行的是Native方法 这个计数器的值则为空
虚拟机栈
作用:存储局部变量表、操作数栈、动态链接和方法的出入信息。每个方法在执行的时候都会去创建对应的栈帧。为执行Java方法服务
特点:线程所私有的 生命周期和线程保持一致
异常
1、如果线程请求的栈的深度大于虚拟机所允许的深度 抛出StackOverFlow异常
2、栈空间在拓展时申请不到足够的内存 则抛出OutOfMemoey异常
本地方法栈
作用:为执行Native方法服务
Java堆
Eden
From Survivor
To Sruvivor
Thread Local Allocation Buffer
老年代
方法区
特点:各个线程所共享的内存区域
作用:存储被虚拟机所加载的类信息、常量、静态变量、及时编译器所编译后的东西
异常情况
当方法区无法满足内存分配的需求时 将抛出OutOfMemeoryError
运行时常量池
用于存放编译期间所生成的各种字面量和符号引用
对象的创建:
1、指针碰撞
用过的内存放一边 没有用过的内存放在另外一边 分配空间时将指针移动到空闲那一侧和对象大小相等的距离,适合内存空间时规整的情况
2、空闲列表
维护一个列表 记录哪些内存空间时可用的 哪些内存空间是不可用的 分配了之后再更新空间地址和列表 适合内存空间分配不规整的情况
对象的内存布局
对象头
存储对象自身的实例数据 统称为MarkWord
hashcode
GC分代年龄
锁状态标识
线程持有的锁
偏向线程ID
类型指针
通过这个指针指向这个对象是哪个类的实例
实例数据
真正存储的有效信息 程序代码中定义的各种类型的字段内容
对齐填充
占位符的作用
对象的访问定位
句柄访问
在Java堆中分配一块作为句柄池 reference中存储具体的对象的句柄地址 这些句柄中包含了对象实例数据与类型数据
直接指针访问
Java堆中需要考虑如何放置类型数据的访问信息 reference中存放的直接就是对象的地址
垃圾收集器与内存收集策略
虚拟机性能监控
类的文件结构
虚拟机类加载机制
内存模型与线程