jvm虚拟机
2021-08-17 09:23:20 10 举报
AI智能生成
登录查看完整内容
为你推荐
查看更多
jvm虚拟机
作者其他创作
大纲/内容
当前线程所执行的 字节码的行号指示器
程序计数器
栈帧
局部变量表
Java虚拟机栈
Native
运行其他语言
本地方法栈
是虚拟机所管理的内存中最大的一块
存放对象实例
垃圾收集器内存管理区域
Java堆
类信息
常量
静态变量
编译器编译后的代码缓存
也有很多人将其称为永久代,在jdk8后不再使用,改用与JRockit、J9一样在本地内存中实现的元空间(Meta- space)来代替
垃圾收集行为在这个区域的 确是比较少出现的
方法区
存放编译期生 成的各种字面量与符号引用,这部分内容将在类加载后存放到方法区的运行时常量池中
编译时存储哪种数据都必须符合规范上的要求才会被虚拟机认可、加载和执行
对于运行时常量池, 《Java虚拟机规范》并没有做任何细节的要求
运行时常量池
并不是虚拟机运行时数据区的一部分,也不是《Java虚拟机规范》中 定义的内存区域
本机直接内存的分配不会受到Java堆大小的限制,但是,既然是内存,则肯定还是会受到 本机总内存
设置-Xmx等参数信息
直接内存
运行时数据区域
类加载检查
TLAB的全称是Thread Local Allocation Buffer,即线程本地分配缓存区,这是一个线程专用的内存分配区域
如果开启则在栈内分配,如果没有则判断java对是否规整
TLAB
指针碰撞,既简单又高效
Serial、ParNew等带压缩 整理过程的收集器
采用较为复杂的空闲列表来分配内存
CMS这种基于清除 (Sweep)算法的收集器
垃圾收集器是否带有空间压缩整理的能力决定
Java堆是否规整
是采用CAS配上失败 重试的方式保证更新操作的原子性
每个线程在Java堆中预先分配一小块内存,称为本地线程分配缓冲
解决对象储存地址频繁移动
对象创建
对象头
实例 数据
和对齐填充
对象的内存布局
分出一块内存来作为句柄池
使用句柄
直接指针
各自的优缺点
对象的访问定位
OutOfMemoryError异常
HOtSpot虚拟机
优点
缺点
如何判断java中没有使用
引用计数算法
“GC Roots”的根对象作为起始节点集
在虚拟机栈(栈帧中的本地变量表)中引用的对象
·在方法区中类静态属性引用的对象
在方法区中常量引用的对象
GC Roots的对象
可达性分析算法
判断对象是否已死
垃圾收集器和内存分配
JVM虚拟机
0 条评论
回复 删除
下一页