object &&& 锁

object(8字节的整数倍)

  1. markword(8字节)

    1. GC信息:存的的年龄
    2. identity hashCode
    3. 锁信息:
    4. 在这里插入图片描述
  2. 类指针:classProinter(4字节)
    1.useCompressClassPointers: 压缩类指针(8->4),内存超32G,失效
    2.记录当前对象属于的 .class 文件

  3. 属性:(存的是对应的指针信息)

    1. userCompressOops:(ordinary object pointers)压缩指针(8->4)
  4. 对齐字段:
    Q1:为什么hotspot不使用C++对象代表JAVA对象?
    A1:java中存在 oop-klass 二元机制,创建对象时,会同时生成 oopDescription 的C++对象(有一个virtual table 指针指向虚方法表,用于实现多态) 和 唯一对象.class(instanceClass)(存的虚方法表);避免每次创建虚方法表,浪费空间。
    Q2:class 对象在那个区(方法区?堆?)
    A2:方法区;(元空间,)。hotspot:创建的对象在堆区,但在方法区存在一个oopD 的C++对象在方法区(会出现OOM),指向堆区的 instanceClass 对象(反射)

锁的升级
无锁:
偏向锁:涉及锁撤销,会一定程度消耗资源,JVM 启动会出现多线程竞争,默认启动时延4秒(但不偏向线程(匿名偏向));关闭偏向锁;(开启:-xxBaiseLockingStartupDelay=?秒 wait()---->重量级锁
轻量级锁:线程未获取锁,就做简单自旋,等待获取锁,由JVM管理自旋次数。
重量级锁:自己维护等待队列,存放想获取锁的进程,避免长时间自旋,且不消耗CPU资源。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值