Skip to content

Latest commit

 

History

History
44 lines (33 loc) · 1.17 KB

其他.md

File metadata and controls

44 lines (33 loc) · 1.17 KB

杂七杂八的基础

超线程

四核八线程,双核四线程之类。

指的是一个核装两个线程(两组线程对应的资源单元,比如多个pc),但只有一个ALU。

cache line

cache line (缓存行),inter的cpu,一个cache line 64字节,cpu一次性读一个cache line的数据。

缓存行越大,局部性空间效率越高,但读取时间慢 缓存行越小,局部性空间效率越低,但读取时间块 取一个这种值,目前多用64字节

DCL为什么要加volatile

禁止指令重排序带来的空指针问题

  • T.java

    源码:
    class T {
    	int m = 8;
    }
    
    T t = new T()
    -------------------------
    翻译成字节码
    new #2<T> // 1. 在堆内存分配一块内存,此时变量m的默认值是0
    dup
    invokespecial #3 <T.<init>> // 2. 调用构造方法,m复制为8
    astore 1 // 3. 建立关联,t指向对象
    return
    
  • 如果发生指令重排序

    new #2 // 在堆内存分配空间
    astore_1 // 2. t指向了半初始化对象,此时判断t不等于空
    invokespecial #3 <T.<init>> // 3. 执行构造方法