synchronized-spark

java中的锁:读锁、写锁、共享锁、互斥锁。
java对象分配内存不固定(不然怎么会有内存溢出),64位虚拟机,最小单位是8个字节的倍数,对象实际没有,jvm就会
自己补空到8的倍数.对象内存结构:对象头、实例数据、对齐填充位(可能没有)。
64位jvm中是12个字节,96位   8位1个字节
com.hbdtld.A object internals:
 OFFSET  SIZE      TYPE DESCRIPTION                               VALUE
      0    12           (object header)                           N/A
     12     1   boolean A.aaa                                     N/A
     13     3           (loss due to the next object alignment)
    
对象头:mark World、对象的HashCode、Epoch、ThreadId、age(gc状态,默认15次复制算法,为什么会15,因为这个age大小是4位,最大能表示0~2的4次方-1,所以是15次)、偏向状态0或1、锁状态标志01、
MetaData元数据指针、数组长度(数组对象才有)

org.openjdk.jol这个包可以查看源码   openjdk8-master
    
hotspot :产品,实现了jvm,sun公司开发的
jvm :规范/标准  (c2 compiler这个处理器是核心)
市面上的虚拟机有:hospot、j9、taobaojvm等待。

对象状态五种:
1、无状态new出来的时候
2、偏向锁
3、轻量锁
4、重量锁
5、gc标记了

mark word根据对象状态时刻变化的。
对象的hashcode:在未执行c++本地方法的hashCode()方法之前是没有储存的     大端存储和小端存储(大部分pc都是这样的),数值存储相反

synchronized-spark_第1张图片

synchronized-spark_第2张图片

 

synchronized-spark_第3张图片

 

synchronized-spark_第4张图片

 

 

 

 

你可能感兴趣的:(web初级)