版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
这这jv的对象头在对象的不同状态下会有不同的表现形式,主要有三种状态,无锁状态、加锁状态、gc标记状态。那么我可以理解jva码块。但是v当中的锁有分为很多种,从上图可以看出大体分为偏向锁、轻量析,我们只有合理的设计代码,才能合理的利用锁、那么这三种锁的原理是什publicpublicclassA3packagepackageimportimportimportstatic5publicclassJOLExample1publicstaticvoidmain(String[]args)throwsException}11))))#Running64‐bitHotSpot#Usingcompressedoopwith0‐bit#Usingcompressedklasswith3‐bit#Objectsare8bytes#Fieldsizesbytype:4,1,1,2,2,4,4,8,8#Arrayelementsizes:4,1,1,2,2,4,4,8,87com.luban.layout.AobjectOFFSETSIZETYPEDESCRIPTION04(objectheader)0100000044(objectheader)00000000(84(objectheader)82220120)124(lossduetothenextobjectInstancesize:16Spacelosses:0bytesinternal+4bytesexternal=4bytes)1Field1Fieldsizesbytype411224488[bytes]对应:[Oop(OrdinaryObjectPointer),boolean,byte,char,short,int,float,long,double]大小整个对象一共B,其中对象头(bjecthrBB字节(因为在4位虚拟机上对象的大小必须是的倍数)B?两个问题publicpublicclassAbooleanflag4#Running#Running64‐bitHotSpot#Usingcompressedoopwith0‐bit#Usingcompressedklasswith3‐bit#Objectsare8bytes#Fieldsizesbytype:4,1,1,2,2,4,4,8,8#Arrayelementsizes:4,1,1,2,2,4,4,8,878com.luban.layout.Aobject9OFFSETSIZETYPEDESCRIPTION04(objectheader)01000000))44(object00000000)84(object82220120)()121boolean133133(lossduetothenextobjectInstancesize:16Spacelosses:0bytesinternal+3bytesexternal=3bytes整个对象的大小还是没有改变一共16B,其中对象头(Object关于java首先openjdk文档当中对对象头的解objectCommonstructureatthebeginningofeveryGC-managedheapobject.(Everyooppointstoanobjectheader.)Includesfundamentalinformationabouttheheapobject'slayout,type,GCstate,synchronizationstate,andidentityhashcode.Consistsoftwowords.Inarraysitisimmediayfollowedbyalengthfield.NotethatbothJavaobjectsandVM-internalobjectshaveacommonobjectheaderformat上述中提到一个java对象头包含了2个word,并且好包含了堆对象的布markThefirstwordofeveryobjectheader.Usuallyasetofbitfieldsincludingsynchronizationstateandidentityhashcode.Mayalsobeapointer(withcharacteristiclowbitencoding)tosynchronizationrelatedinformation.DuringGC,maycontainGCstatebits. klassThesecondwordofeveryobjectheader.Pointstoanotherobject(ametaobject)whichdescribesthelayoutandbehavioroftheoriginalobject.ForJavaobjects,the"klass"containsaC++style"vtable". 的源码注释中得知到一个markword一个是64bit,那么klass的长度是多少呢?根据上述利用JOL打印的对象头信息可以知道一个对象头是12B,其中8B是markword4B就是klassword了,和锁相关的就是markword了,那么接下来重点分析markword里面信息publicstaticvoidmain(String[]args)throwsExceptionAa=newout.println("befor//JVM计算的out.println("after13beforcom.luban.layout.AobjectOFFSETSIZETYPEDESCRIPTION04(objectheader)01000000 44(objectheader)00000000 6678984(objectheader)43c10020)121booleanA.flag133(lossduetothenextobjectInstancesize:16Spacelosses:0bytesinternal+3bytesexternal=3bytes)afterhashcom.luban.layout.Aobjectinternals:OFFSETSIZETYPEDESCRIPTIONVALUE04(objectheader)019409e4)44(objectheader)6a000000))(84(objectheader)43c10020)121booleanA.flag133(lossduetothenextobjectalignment)Instancesize:16bytesSpacelosses:0bytesinternal+3bytesexternal=3bytes)26Processfinishedwithexitcode Stringcode= 20分析结果 印完hashcode之后 储。其中2行是我们通过hashcde方法打印的结果,行是我根据-B的信息计算出来的hashcde,所以以确定对象头当中的markwok里面的后七个字节的是hashcd信息,那么第一个字节当中的八位分别存的就是分带、偏向锁信息,和对象状态,这个t分别表示的信息如下图(其实上图也有信息),关于对象状态一共分为五种状态,分别是无锁、偏向锁、轻量锁、重量锁、C标记,那么t,如何能表示五种状态(bt4中状态分别是:1,m做的比较好的是把偏向锁和无锁状态表示为同一个状态,根据偏向标识标识锁还向锁。什思呢个代码分析一下,在写代码之前我们先记得无锁状态下的信息 ,然写一个偏向锁的例子看看结果packagepackageimportimportstatic45publicclassJOLExample2staticstaticApublicstaticvoidmain(String[]args)throwsExceptiona=newout.println("befreout.println("after}publicstaticvoidsync()throwsInterruptedExceptionsynchronized} 23404 544 684 ))7121boolean133(lossduetothenextobjectInstancesize:16Spacelosses:0bytesinternal+3bytesexternal=3bytesaftercom.luban.layout.AobjectOFFSETSIZETYPEDESCRIPTION04(objectheader)01000000)44(objectheader)00000000)(84(objectheader)43c10020)121booleanA.flag133(lossduetothenextobject)分析结果上面这个程序只有一个线程去调用sync 和无锁的时候一模一 们可以直接通过JVM的参数来禁用延迟-XX:+UseBiasedLocking-packagepackageimportpackagepublicclassAintpublicsynchronizedvoid}7importimportstatic//‐XX:BiasedLockingStartupDelay=20000publicclassJOLExample3publicstaticvoidmain(String[]args)throwsExceptionAa=newlongstart=9for(inti=0;i<}Llongend=System.out.println(String.format("%sms",end‐ 19那么问题来了,什么是轻量级锁呢?工作原理是什么呢?为什么比偏向锁慢?轻量级锁尝试在应用层面解决线程同步问题,而不触发操作系统的互斥操作,轻量级锁减少多线程进入互斥的几率,不能代替互斥packagepackageimportimportstatic4publicclassJOLExample5staticApublicstaticvoidmain(String[]args)throwsExceptiona=newout.println("befreout.println("after} publicstaticvoidsync()throwsInterruptedExceptionsynchronizedsynchronizedout.println("lock}}221package1package23import4568publicclassJOLExample4staticCountDownLatchcountDownLatch=newpublicstaticvoidmain(String[]args)throwsException{finalAa=newA();79 longstart= L来计 for(intnewpublicvoidrun()while(countDownLatch.getCount()>0)}}}longend=System.out.println(String.format("%sms",end‐ 30packageimportimportstatic4publicclassJOLExample6staticApublicstaticvoidmain(String[]args)throwsExceptiona=newout.println("befreThreadt1=newpublicvoidrun()synchronizedtrySystem.out.println("t1}catch(InterruptedExceptione)}}}out.println("t1lockout.println("afterout.println("after}publicstaticvoidsync()throwsInterruptedExceptionsynchronizedSystem.out.println("t1main}}441package1package23import45importstatic6publicclassJOLExample7staticApublicstaticvoidmain(String[]args)throwsExceptiona=newout.println("befreThreadt1=newpublicvoidrun()synchronizedtrysynchronized(a)System.out.println("beforeSystem.out.println("after}}catch(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 山西省大同市铁路第一中学2025届高考英语倒计时模拟卷含解析
- 2025届金陵中学高考仿真模拟英语试卷含解析
- 陕西省西北农林科技大学附属中学2025届高三第二次诊断性检测数学试卷含解析
- 绥化市重点中学2025届高考考前模拟英语试题含解析
- 江西上饶市2025届高考英语二模试卷含解析
- 2025届内蒙古巴彦淖尔市乌拉特前旗第一中学高考考前提分数学仿真卷含解析
- 2025届广西玉林市福绵区高考仿真卷数学试卷含解析
- 2025届宁夏达标名校高考压轴卷英语试卷含解析
- 湖北省武汉二中2025届高考数学二模试卷含解析
- 广西贵港市2025届高三一诊考试英语试卷含解析
- 旧社区改造案例课件
- 灭火器维修检测报告
- 日间化疗相关管理制度
- 人教版小学数学三年级下册全册教学课件(2023年2月修订)
- 信息社会的伦理道德 课件【知识精讲+备课精研】高中信息技术教科版(2019)必修2
- 人际交往与沟通技巧学习通课后章节答案期末考试题库2023年
- 2023年高考英语必备-语法填空八-自然环境(教师版)
- Kistler测力台操作手册
- 高中英语试卷分析失分原因和改进措施6篇,高中英语试卷分析及改进措施
- C语言冒泡排序
- 铁路线路工更换钢轨作业指导书
评论
0/150
提交评论