每个线程都有一个虚拟机栈,栈的内部是一个个栈帧,每个栈帧由局部变量表、操作数栈、动态链接、方法返回地址构成
局部变量表:定义为一个数字数组,主要用于存储方法参数和定义在方法体内的局部变量,这些数据类型包括各类基本数据类型...,对于一个64位的服务器端JVM来说,其默认的内存大小为21MB,这就是初始的高水位线,一旦触及这个水位线,Full GC将会触发并卸载没有用的类(即这些类对应的类加载器不在存活),然后这个高水位线会重置...,新的高水位线取决于GC后释放了多少元空间,如果释放的空间不足,那么在不超过MaxMetaspaceSize的情况下适当提高该值,如果释放空间过多,则适当降低该值
如果初始化高水位线设置过低,上述高水位线调整情况会发生很多次...对象头
运行时元数据(Mark Word)
哈希值(HashCode)
GC分代年龄
锁状态标志
线程持有的锁
偏向线程ID
偏向时间戳
类型指针
指向类元数据InstanceKlass...,确定该对象所属类型
如果是数组,还需要记录数组长度
实例数据(InstanceData)
它是对象真正存储的有效信息,包括程序代码中定义的各种类型的字段(包括从父类继承下来的和本身拥有的字段)
相同宽度的字段被分配在一起