
jvm
Fant_J
千千阙文。
展开
-
JVM内存管理
关系图:程序计数器虚拟机栈本地方法栈堆内存方法区更深入的了解常量池和intern: JVM将内存主要划分为:方法区、虚拟机栈、本地方法栈、堆、程序计数器。JVM运行时数据区.关系图:程序计数器记录当前线程锁执行的字节码的行号。 1. 程序计数器是一块较小的内存空间。 2. 处于线程独占区。 3. 执行java方法时,它记录正在执行的...原创 2018-08-12 13:00:35 · 298 阅读 · 0 评论 -
JVM视角看对象创建
从jvm处理对象的流程来看,大概分成三步骤:1.如何创建。2.什么是最佳存储模型。3.如何访问。本文将按照这三个流程进行讲解。一、对象的创建过程1. 拿到内存创建指令2. 检查符号引用3. 分配内存3.1. 指针碰撞3.2. 空闲列表3.2.5 安全性问题的思考3.3 线程同步策略3.4. 本地线程分配缓冲4. 初始化5. 调用对象的初始化方法...原创 2018-08-12 13:01:15 · 432 阅读 · 0 评论 -
JVM垃圾回收机制
1. 如何判定对象为垃圾对象1.1 引用计数法1.2 可达性分析法1.3 在Java, 可作为GC Roots的对象包括:2. 如何回收2.1 回收策略3. 分代收集算法3.1 标记-清除算法(老年代)3.2 复制算法(新生代)3.3 标记-整理算法(老年代)3.4 方法区回收(永久代)3.5 分区收集4. 垃圾回收器4.1 ...原创 2018-08-12 13:03:24 · 265 阅读 · 0 评论 -
JVM分析工具概述
JPSjpsjps -qjps -mjps -ljps -vJstatJinfojinfo -flags jinfo -sysprops jinfo -flag -PrintGC jinfo -flag +PrintGC jinfo -flag PrintGC Jmapjmap -finalizerinfojmap -h...原创 2018-08-12 13:04:00 · 879 阅读 · 0 评论 -
Class文件结构&字节码指令
class文件结构无符号数表Class文件设计理念和意义1. 魔数magic证明magic作用minor_version、major_version2. constant_pool_count3. constant_pool[]常量池3.1 CONSTANT_Class_info结构3.2 CONSTANT_Fieldref_inf...原创 2018-08-12 13:04:37 · 643 阅读 · 0 评论 -
JVM类加载机制
概述类加载过程1. 加载(Loading)1.1 加载源2. 连接2.1 验证2.1.1 文件格式验证2.1.2 元数据验证2.1.3 字节码验证2.1.4 符号引用验证2.2 准备整体类型是:浮点类型是:参考类型和值2.3 解析2.3.1 类或者接口的解析2.3.2 字段解析2.3.3 类方法解析2.3.4 接口方法解析...原创 2018-08-12 13:05:46 · 293 阅读 · 0 评论 -
JVM运行时栈帧结构
栈帧(Stack Frame)是用于支持虚拟机进行方法调用和方法执行的数据结构,它是虚拟机运行时数据区的虚拟机栈(Virtual Machine Stack)的栈元素。栈帧存储了方法的局部变量表,操作数栈,动态连接和方法返回地址等信息。第一个方法从调用开始到执行完成,就对应着一个栈帧在虚拟机栈中从入栈到出栈的过程。每一个栈帧都包括了局部变量表,操作数栈,动态连接,方法返回地址和一些额外...原创 2018-08-15 21:11:43 · 969 阅读 · 0 评论 -
JVM--方法调用
方法调用不是方法执行,方法调用是让jvm确定调用哪个方法,所以,程序运行时的它是最普遍、最频繁的操作。jvm需要在类加载期间甚至运行期间才能确定方法的直接引用。解析所有方法在Class文件都是一个常量池中的符号引用,类加载的解析阶段会将其转换成直接引用,这种解析的前提是:要保证这个方法在运行期是不可变的。这类方法的调用称为解析。jvm提供了5条方法调用字节码指令:[ ...原创 2018-08-15 21:11:59 · 503 阅读 · 0 评论