网站制作的大公司,wordpress伪静态apache,网络投票程序,永城城乡建设局网站对象头包含#xff1a;
markword(和锁相关的信息) 8字节
class pointer(说明对象属于哪个类)#xff0c;jvm指针八字节#xff0c;但是默认压缩#xff0c;所有4个字节
对象体包含#xff1a;
instance word实例数据(例如int#xff0c;这就占四个字节#xff0c;l…对象头包含
markword(和锁相关的信息) 8字节
class pointer(说明对象属于哪个类)jvm指针八字节但是默认压缩所有4个字节
对象体包含
instance word实例数据(例如int这就占四个字节long就占八个)
padding 对齐整体不能被八整除就补齐八为了提高效率
查看对象在内存中的情况先导入classLayout jar包
下载地址https://repo.maven.apache.org/maven2/org/openjdk/jol/jol-cli/ 选xxxfull.jar 上图中第一行开始地址是0大小为4字节的第二行开始地址是4大小为4字节的 就是markword
第三行是class pointer压缩过了四字节
因为o没有数据所以总共大小是8412补齐之后是16
最后一行就是补齐了四个字节 刚new出来的对象处于无锁态没竞争的时候是偏向锁每次来看一看有没有人用没有我继续用有竞争转为自旋锁即轻量级锁一直自旋如果竞争激烈转为重量级锁。
可以看出mark word不光有锁信息还有分代年龄信息
例老年代很快满了分代从15改为31可行不 不可行分代年龄总共四位最大是15
上面的hashcode存的是identity hashcode调用hahcode方法之后才有值不然里面没值。
偏向锁54位里面记录了这个线程的id下次有调用会对比id
轻量级锁的62位这些竞争的线程每个都有自己的lock Record来抢通过自旋来抢谁抢到谁的 因为一直自旋太消耗cpu所以转到重量级锁 锁消除
public void add(String s1,String s2){ StringBuffer sb new StringBuffer();
sb.append().append();
}
append是线程安全的一直加锁解锁性能低检测到只在这个方法里用到sb的append消除锁不用。