Blog

Ch04-Java 之 类的整个生命周期

August 15, 2017
JVM
jvm

其中类加载的过程包括了加载验证准备解析初始化五个阶段。在这五个阶段中,加载、验证、准备和初始化这四个阶段发生的顺序是确定的,而解析阶段则不一定,它在某些情况下可以在初始化阶段之后开始,这是为了支持 Java 语言的运行时绑定 (也成为动态绑定或晚期绑定)。另外注意这里的几个阶段是按顺序开始,而不是按顺序进行或完成,因为这些阶段通常都是互相交叉地混合进行的,通常在一个阶段执行的过程中调用或激活另一个阶段。

...

Ch03-Java 之 Java 对象结构

August 10, 2017
JVM
jvm

在 HotSpot 虚拟机中,对象在内存中存储的布局可以分为三块区域:对象头 (Header)实例数据 (Instance Data)对齐填充 (Padding)

...

Ch02-Java 之 JVM 内存结构 (JVM)

August 6, 2017
JVM
jvm

Java 虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁。另外一些则是与线程一一对应的,这些与线程一一对应的数据区域会随着线程开始和结束而创建和销毁。

  • 线程私有:程序计数器、虚拟机栈、本地方法区
  • 线程共享:堆、方法区,堆外内存(Java7 的永久代或 JDK8 的元空间、代码缓存)
...

Ch4-Java 之 JUC

April 11, 2017
Java | JUC
java

JUC 即 java.util.concurrent,是 Java 并发编程中很常用的实用工具类。它包含了 Lock 框架Collections 并发集合Executors 线程池Atomic 原子类Tools

...

Ch3-Java 之 ThreadLocal

April 9, 2017
Java | JUC
java

java.lang.ThreadLocal是一个将在多线程中为每一个线程创建单独的变量副本的类; 当使用 ThreadLocal 来维护变量时,ThreadLocal 会为每个线程创建单独的变量副本,避免因多线程操作共享变量而导致的数据不一致的情况。

...