随笔分类 - JVM
摘要:1.volatile关键字 Java语言提供了一种稍弱的同步机制,即volatile变量,用来确保将变量的更新操作通知到其他线程。当把变量声明为volatile类型后,编译器与运行时都会注意到这个变量是共享的,因此不会将该变量上的操作与其他内存操作一起重排序。volatile变量不会被缓存在寄存器或
阅读全文
摘要:1. 判断对象对应的类是否被加载,链接,初始化 虚拟机遇到一条new 指令,首先求检查这个和这个符号引用代表的类是否被加载,链接和初始化,即:判断类元信息是否存在)。如果没有,那么双亲委派机制模式下,使用当前类加载器以ClassLoader+包名+类名为key进行查找对应的.class文件。如果,没
阅读全文
摘要:一. 对象内存构成 对象的组成组成 JVM 中,Java对象保存在堆中时,由以下三部分组成: 对象头(object header):包括了关于堆对象的布局、类型、GC状态、同步状态和标识哈希码的基本信息(12byte)。 对象头由三部分组成: 1,Mark Word 2,指向类的指针(指向元空间)
阅读全文
摘要:一、Java内存模型 Java虚拟机在执行程序时把它管理的内存分为若干数据区域,这些数据区域分布情况如下图所示: 1. 程序计数器 一块较小内存区域,指向下一条要执行的指令。如果线程正在执行一个Java方法,这个计数器记录将要执行的虚拟机字节码指令的地址,如果执行的是Native方法,这个计算器值为
阅读全文
摘要:一、概述 类从创建起(这里的类也可能是接口,下同),就注定了其是有生命周期的(这里的生命周期指的是类在运行期间所经历的过程,与是否存储在存储介质上无关)。类从被虚拟机加载到内存中开始,到卸载出内存为止,它的生命周期经历了加载(Loading)、验证(Verification)、准备(Preparat
阅读全文