第九章 9.1 OS初始化2 9.1.1 os_linux.cpp 9.1.1.1 os::init_2 这个函数是在全部参数都解析后调用的 9.1.1.2 SR_initi...
第九章 9.1 OS初始化2 9.1.1 os_linux.cpp 9.1.1.1 os::init_2 这个函数是在全部参数都解析后调用的 9.1.1.2 SR_initi...
第八章 这一章是接着章节7.1 启动参数解析来讲的,第七章中对这块参数的解析有些遗漏,现在补充下,主要是针对内存分配参数的解析做重点介绍 8.1 虚拟机参数解析 8.1.1 ...
第七章 7.1 启动参数解析 7.1.1 arguments.cpp 7.1.1.1 Arguments::parse 7.2 确定处理核数和指令集 7.2.1 os.cpp...
第六章 本章主要讲解一下创建Java虚拟前,对所需要的操作系统本身信息的初始化操作。 6.1 OS初始化 6.1.1 os_linux.cpp 6.1.1.1 os::ini...
第五章 5.1 初始化Java虚拟机 5.1.1 java.c 5.1.1.1 InitializeJVM 5.2 创建Java虚拟机 5.2.1 jni.cpp 5.2.1...
第四章 4.1 线程创建 4.1.1 java.c 4.1.1.1 ContinueInNewThread threadStackSize参数表示线程执行时的栈空间,因为每个...
第三章 3.1 创建执行环境 3.1.1 java.c 3.1.1.1 CreateExecutionEnvironment 这个函数给jvm运行提前创建执行环境,主要做以下...
第二章 2.1 执行过程 2.1.1 main.c 2.1.1.1 main 图2-1 图2-2 2.1.2 java.c 2.1.2.1 JLI_Launch
第一章 源码下载 1、打开OpenJDK官网:https://openjdk.org/[https://openjdk.org/] 2、找到左侧的Mercurial,点击进入...
开篇 前置知识 1、C/C++语言 2、汇编语言 3、操作系统(这里主要是Linux) 4、计算机组成原理 说明 了解Hotspot源码的意义
存储结构 说明:本次讲解的HashMap是jdk1.8中的实现,其他版本可能有差异 内部是由Node节点数组组成,Node节点之间又由链表或红黑树组成。 图是网上找的,实在不...
概念 同步和异步怎么理解? 其实同步和异步最本质的区别就是,同步是主动询问结果,而异步是被动通知获取结果。 Future是什么? 其实Future就是异步任务执行后返回的结果...
概念 ThreadPoolExecutor是线程池执行器,在定义好线程池的基础信息(核心线程数、最大线程数、空闲线程驻留时间、线程队列、创建线程的工厂、拒绝策略)后,可以将线...
概念 LinkedBlockingQueue是非固定容量队列,内部是通过链表存放数据,并通过两把互斥锁(分别为取时互斥锁和放时互斥锁,这也是与ArrayBlockingQue...
概念 ArrayBlockingQueue是固定容量队列,不可扩容,内部是通过Object数组存放数据,并通过一把互斥锁来控制访问数据的同步问题 add方法 offer方法 ...
概念 通过AQS的互斥锁机制(ReentrantLock)+条件(Condition)实现的,用于一组线程相互之间等待,直到到达某个公共屏障点 (common barrier...
跟Semaphore一样,也是通过AQS的共享锁机制实现的,用于一个或多个线程等待其他线程完成的一组操作。原理如下: 1、用AQS的state变量表示操作个数 2、用AQS的...
信号量就是通过AQS的共享锁机制来实现的。这个类总体比较简单,就不做过多描述。 Sync同步器 acquire
基于AQS的互斥锁(写)和共享锁(读)实现的可重入读写锁 属性 Sync同步器 tryAcquire(写锁获取子类实现) writerShouldBlock tryRelea...
基于AQS实现的可重入锁,包括公平和非公平两种实现方式。 公平与非公平的差异: 1、非公平:主动抢锁,抢锁失败,进入AQS实现的获取锁流程(排队去) 2、公平锁:不主动抢锁,...