jvm
Fant_J
千千阙文。
展开
-
JVM内存管理
关系图: 程序计数器 虚拟机栈 本地方法栈 堆内存 方法区 更深入的了解常量池和intern: JVM将内存主要划分为:方法区、虚拟机栈、本地方法栈、堆、程序计数器。JVM运行时数据区. 关系图: 程序计数器 记录当前线程锁执行的字节码的行号。 1. 程序计数器是一块较小的内存空间。 2. 处于线程独占区。 3. 执行java方法时,它记录正在执行的...原创 2018-08-12 13:00:35 · 277 阅读 · 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 · 417 阅读 · 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 · 250 阅读 · 0 评论 -
JVM分析工具概述
JPS jps jps -q jps -m jps -l jps -v Jstat Jinfo jinfo -flags jinfo -sysprops jinfo -flag -PrintGC jinfo -flag +PrintGC jinfo -flag PrintGC Jmap jmap -finalizerinfo jmap -h...原创 2018-08-12 13:04:00 · 841 阅读 · 0 评论 -
Class文件结构&字节码指令
class文件结构 无符号数 表 Class文件设计理念和意义 1. 魔数magic 证明magic作用 minor_version、major_version 2. constant_pool_count 3. constant_pool[]常量池 3.1 CONSTANT_Class_info结构 3.2 CONSTANT_Fieldref_inf...原创 2018-08-12 13:04:37 · 589 阅读 · 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 · 279 阅读 · 0 评论 -
JVM运行时栈帧结构
栈帧(Stack Frame)是用于支持虚拟机进行方法调用和方法执行的数据结构,它是虚拟机运行时数据区的虚拟机栈(Virtual Machine Stack)的栈元素。栈帧存储了方法的局部变量表,操作数栈,动态连接和方法返回地址等信息。第一个方法从调用开始到执行完成,就对应着一个栈帧在虚拟机栈中从入栈到出栈的过程。 每一个栈帧都包括了局部变量表,操作数栈,动态连接,方法返回地址和一些额外...原创 2018-08-15 21:11:43 · 935 阅读 · 0 评论 -
JVM--方法调用
方法调用不是方法执行,方法调用是让jvm确定调用哪个方法,所以,程序运行时的它是最普遍、最频繁的操作。jvm需要在类加载期间甚至运行期间才能确定方法的直接引用。 解析 所有方法在Class文件都是一个常量池中的符号引用,类加载的解析阶段会将其转换成直接引用,这种解析的前提是:要保证这个方法在运行期是不可变的。这类方法的调用称为解析。 jvm提供了5条方法调用字节码指令: [ ...原创 2018-08-15 21:11:59 · 484 阅读 · 0 评论