20200729 synchronzied 马士兵视频学习笔记

c,c++ 自己管理内存,释放内存

java有自己的GC垃圾回收机制,不用手工管理,缺点是会有stw

Java中Stop-The-World机制简称STW,是在执行垃圾收集算法时,Java应用程序的其他所有线程都被挂起(除了垃圾收集帮助器之外)。Java中一种全局暂停现象,全局停顿,所有Java代码停止,native代码可以执行,但不能与JVM交互;这些现象多半是由于gc引起。
 
GC时的Stop the World(STW)是大家最大的敌人。但可能很多人还不清楚,除了GC,JVM下还会发生停顿现象。

synchronzied很重,是针对jdk1.0-1.2而言,因为锁是由os的内核态管理。1.2-1.6没有那么重,性能已经优化,交由用户态来管理

        Object object = new Object();
        int a = 0;
        synchronized (object) {
            a++;
        }

  

java对象布局

对象头:mark word 4byte

    klass pointer 4byte

对象成员(实例数据)

对齐数据 保证对象头+对象成员+对齐数据是8的整数倍

打印对象头

	<dependencies>
		<dependency>
			<groupId>org.openjdk.jol</groupId>
			<artifactId>jol-core</artifactId>
			<version>0.11</version>
		</dependency>
	</dependencies>

  

    public static void main(String[] args) {
        Object object = new Object();
        System.out.println(ClassLayout.parseInstance(object).toPrintable());
    }

  

java.lang.Object object internals:
 OFFSET  SIZE   TYPE DESCRIPTION                               VALUE
      0     4        (object header)                           01 00 00 00 (00000001 00000000 00000000 00000000) (1)
      4     4        (object header)                           00 00 00 00 (00000000 00000000 00000000 00000000) (0)
      8     4        (object header)                           28 0f ff 7f (00101000 00001111 11111111 01111111) (2147421992)
     12     4        (loss due to the next object alignment)
Instance size: 16 bytes
Space losses: 0 bytes internal + 4 bytes external = 4 bytes total
原文地址:https://www.cnblogs.com/lt123/p/13399955.html