JVM 标签下的文章

Java

Java Classloader

1. 类加载时机1.1. 生命周期 1.2. 立即初始化(主动引用) 遇到new、 getstatic、 putstatic或invokestatic这4条字节码指令时 使用java.lang.reflect包的方法对类进行反射调用的时候,如果类没有进行过初始化,则需要先触发其初始化. 当初始化一个类的时候,如果发现其父类还没有进行过初始化,则需要先触发其父类的初始化. 当虚拟机启动时,用户需要指定一个要执行的主类(包含main()方法的那个类),虚拟机会先初始化这个主类. 当使用JDK 1.7的动态语言支持时,如果一个java.lang.invoke.MethodHandle实例最后的解析结果REF_getStatic、 REF_putStatic、REF_invokeStatic的 ...

阅读剩下更多

Java Classloader
Java

Java GC

一. Java虚拟机内存区域1. 运行时数据区 2. 程序计数器(Program Counter Register) 1、程序计数器是线程内(每个线程都有唯一的、封闭的)一小块内存区域 2、计数器指定的是当前虚拟机执行指令的地址 3、当虚拟机执行的是Native方法时,计数器值为空(Undefined),此内存区域是唯一一个在Java虚拟机规范中没有规定任何OutOfMemoryError 情况的区域. 3. Java虚拟机栈(Java Virtual Machine Stacks) 1、虚拟机栈是线程内部的、封闭的 2、虚拟机栈描述的是java方法执行的内存模型 3、每个方法在执行的同时都会创建一个栈帧(Stack Frame)用于存储局部变量表、 操作数栈、 动态链接、 方 ...

阅读剩下更多

Java GC
Java

Java Memory Model

1. 内存模型(JMM) 2. 内存间的交互操作2.1. 定义操作 lock(锁定):作用于主内存的变量,它把一个变量标识为一条线程独占的状态. unlock(解锁):作用于主内存的变量,它把一个处于锁定状态的变量释放出来,释放后的变量才可以被其他线程锁定. read(读取):作用于主内存的变量,它把一个变量的值从主内存传输到线程的工作内存中,以便随后的load动作使用. load(载入):作用于工作内存的变量,它把read操作从主内存中得到的变量值放入工作内存的变量副本中. use(使用):作用于工作内存的变量,它把工作内存中一个变量的值传递给执行引擎,每当虚拟机遇到一个需要使用到 变量的值的字节码指令时将会执行这个操作. assign(赋值):作用于工作内存的变量,它把一个从执行引擎接 ...

阅读剩下更多

Java Memory Model
返回顶部