JVM
文章平均质量分 84
java虚拟机
古月日月衣羊
博观而约取,厚积而薄发
展开
-
JVM第7篇-性能监控 & JVM性能调优案例
性能监控一、JVM监控及诊断工具-命令行篇1.1 基础故障处理工具1.1.1 jps: 虚拟机进程状况工具命令格式使用1.1.2 jstat: 虚拟机统计信息监视工具命令格式使用1.1.3 jinfo: Java配置信息工具命令格式使用1.1.4 jmap: Java内存映像分析工具命令格式1.1.5 jstack: Java堆栈跟踪工具命令格式使用二、JVM监控及诊断工具-GUI篇三、JVM运行时参数四、调优概述4.1 生产环境中的问题4.2 调优基本问题为什么要调优?调优的大方向不同阶段的考虑总结4.3原创 2021-11-25 13:37:08 · 1617 阅读 · 0 评论 -
JVM第6篇-垃圾回收
垃圾回收一、概述1.1 什么是垃圾?1.2 为什么需要GC?1.3 GC的重点区域?二、垃圾回收算法2.1 垃圾判定算法2.1.1 引用计数算法优缺点测试2.1.2 可达性分析算法原理与基本思路优点GC Roots注意点2.2 垃圾清除算法2.2.1 标记-清除算法缺点2.2.2 标记-复制算法优缺点应用场景2.2.3 标记-整理算法指针碰撞优缺点2.2.4 三种垃圾回收算法对比2.2.5 分代收集算法分析2.2.6 增量收集算法缺点三、相关概念3.1 System.gc()测试3.2 finalize方法原创 2021-11-23 16:29:57 · 255 阅读 · 0 评论 -
JVM第5篇-执行引擎
执行引擎一、执行引擎是做什么的?二、执行引擎是怎么工作的?三、代码编译和执行的过程3.1 解释器3.1.1 工作机制分类3.2 为什么说Java是半编译半解释型语言?3.3 JIT编译器为什么还保留解释器执行方式?HotSpot JVM执行方式一、执行引擎是做什么的?执行引擎是Java虚拟机核心的组成部分之一。JVM的主要任务是负责装载字节码到其内部,单字节码并不能够直接运行在操作系统之上,因为字节码指令并非等价于本地机器指令,它内部包含的仅仅只是一些能够被JVM所识别的字节码指令、符号表,以及其他原创 2021-11-21 21:18:38 · 260 阅读 · 0 评论 -
JVM第四篇-对象内存布局
对象内存布局一、 对象的实例化1.1 你有几种方式创建对象?1.2 创建对象的步骤二、对象的内存布局2.1 对象头(Header)2.2 实例数据(Instace Data)2.3 对齐填充(Padding)三、对象的访问定位3.1 直接指针访问3.2 句柄访问一、 对象的实例化1.1 你有几种方式创建对象?new反射实现clonable接口,重写clone方法反序列化第三方库Objenesis,利用了asm字节码技术,动态生成Constructor对象1.2 创建对象的步骤判断对象原创 2021-11-21 14:50:18 · 244 阅读 · 0 评论 -
JVM第三篇-内存结构
内存结构一、程序计数器(线程私有)二、虚拟机栈(线程私有)2.1 设置栈大小(-Xsssize | -XX:ThreadStackSize)测试代码无参时-Xss1024k-Xss512k-Xss256k2.2 方法和栈帧之间存在怎样的关系?2.3 栈帧内部结构局部变量表关于Slot的理解与GC Roots的关系操作数栈举例操作数栈的测试方法1栈顶缓存技术?动态链接(或指向运行时常量池的方法引用)方法出口三、本地方法栈3.1 什么是本地方法?3.2 为什么要使用Native Method?3.3 本地方法现原创 2021-11-21 00:45:50 · 519 阅读 · 0 评论 -
JVM第二篇-类的加载
类的加载一、类的加载过程(生命周期)1.1 说说类加载分几步?1.1.1 谁需要加载?1.2 过程一: Loading(装载)阶段1.2.1 做了什么事?1.2.2 什么是类模板对象1.2.3 Class实例的位置在哪1.2.4 数组类的加载有什么不同?一、类的加载过程(生命周期)1.1 说说类加载分几步?1.1.1 谁需要加载?在Java中数据类型分为基本数据类型和引用数据类型。基本数据类型由虚拟机预先定义,引用数据类型则需要进行类的加载。1.2 过程一: Loading(装载)阶段1.2.原创 2021-11-18 00:50:17 · 583 阅读 · 0 评论 -
JVM第一篇-字节码
字节码一、字节码文件概述1.1 字节码文件是跨平台的吗?1.2 class文件里是什么?1.3 生成class文件的编译器?1.4 前端编译器的局限性1.5 哪些类型有对应的Class的对象1.6 字节码指令1.6.1 字节码指令是什么?1.6.2 为什么要懂字节码指令?面试题: i++和++i有什么区别?面试题: 以下程序运行结果?包装类对象的缓存问题程序的输出结果程序的输出结果1.7 如何解读class文件?二、Class文件结构细节2.1 class文件结构细节概述2.1.1 面试题: class文件原创 2021-10-31 15:16:25 · 529 阅读 · 2 评论 -
《深入理解JVM虚拟机》读书笔记——运行时数据区
JVM—运行时数据区1. 运行时数据区1.1 程序计数器(线程私有)1.2 虚拟机栈(线程私有)1.3 本地方方法栈(线程私有)1.4 Java堆(线程共享)1.5 方法区(线程共享)JVM面试题Java与C++之间有一堵由内存动态分配与垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来——摘自《深入理解Java虚拟机》1. 运行时数据区Java 虚拟机在执行 Java 程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域 有各自的用途,以及创建和销毁的时间,有的区域随着虚拟原创 2021-10-04 22:21:54 · 192 阅读 · 0 评论 -
1.JVM,JRE,JDK三者之间的关系
JDK: JAVA Development Kit(JAVA开发工具包)JRE: JAVA Runtime Environment(JAVA运行环境)JVM: JAVA Virtual Machine(JAVA虚拟机)三者的关系如下图JDK = JRE + JAVA的开发工具(javac.exe,java.exe,javadoc.exe等)JRE = JVM + JAVA核心类库...原创 2021-08-14 10:19:22 · 1572 阅读 · 1 评论