
jvm专题
文章平均质量分 89
欢迎来到“深入理解JVM - 从入门到精通”专栏!作为Java生态系统的核心组件,JVM在Java程序的执行中扮演着至关重要的角色。本专栏将带领您一步步深入了解JVM的工作原理、优化技巧以及最佳实践,帮助您成为JVM领域的专家。无论您是初学者还是有经验的开发者,这里都有适合您的内容,让我们一起探索
MrJson-架构师
这个作者很懒,什么都没留下…
展开
-
java基本int类型以及其包装类的数值大小比较
基本类型与包装类型在某些操作符的作用下, 包装类型调用valueOf()方法将原始类型值转换成对应的包装类对象的过程, 称之为自动装箱;反之调用xxxValue()方法将包装类对象转换成原始类型值的过程, 则称之为自动拆箱。这种做法使程序员的代码变得更加简洁, 不再需要进行显式转换。原创 2023-01-12 09:06:24 · 585 阅读 · 0 评论 -
JVM中篇【字节码与类的加载篇】之【04-再谈类的加载器】
文章目录1. 概述1.1. 大厂面试题1.2. 类加载器的分类1.3. 类加载器的必要性1.4. 命名空间1.5. 类加载机制的基本特征1.6. 类加载器之间的关系2. 类的加载器分类2.1. 引导类加载器2.2. 扩展类加载器2.3. 系统类加载器2.4. 用户自定义类加载器3. 测试不同的类的加载器4. ClassLoader源码解析4.1. ClassLoader的主要方法4.2. SecureClassLoader与URLClassLoader4.3. ExtClassLoader与AppClass原创 2021-12-23 20:15:06 · 855 阅读 · 0 评论 -
JVM中篇【字节码与类的加载篇】之【03-类的加载过程(类的生命周期)详解】
文章目录1. 概述大厂面试题2. 过程一:Loading(加载)阶段2.1. 加载完成的操作2.2. 二进制流的获取方式2.3. 类模型与 Class 实例的位置2.4. 数组类的加载3. 过程二:Linking(链接)阶段3.1. 环节 1:链接阶段之 Verification(验证)3.2. 环节 2:链接阶段之 Preparation(准备)3.3. 环节 3:链接阶段之 Resolution(解析)4. 过程三:Initialization(初始化)阶段4.1. static 与 final 的搭配原创 2021-12-23 20:14:02 · 758 阅读 · 0 评论 -
JVM中篇【字节码与类的加载篇】之【02-字节码指令集】
文章目录1. 概述2. 加载与存储指令2.1. 局部变量压栈指令局部变量压栈常用指令集局部变量压栈指令剖析2.2. 常量入栈指令常量入栈常用指令集常量入栈指令剖析2.3. 出栈装入局部变量表指令出栈装入局部变量表常用指令集出栈装入局部变量表指令剖析3. 算术指令整数运算逻辑运算移位操作按位布尔运算浮点运算算术指令集算术指令举例举例1举例2举例34. 类型转换指令宽化类型转换窄化类型转换4.1. 宽化类型转换剖析4.2. 窄化类型转换剖析5. 对象的创建与访问指令对象操作指令数组操作指令5.1. 创建指令5.原创 2021-12-23 20:12:48 · 821 阅读 · 0 评论 -
JVM中篇【字节码与类的加载篇】之【01-class文件结构】
文章目录1. Class 文件结构1.1. Class 字节码文件结构1.2. Class 文件数据类型1.3. 魔数1.4. 文件版本号1.4.1. Class 文件版本号对应关系1.5. 常量池集合1.5.1. 常量池计数器1.5.2. 常量池表Ⅰ. 字面量和符号引用Ⅱ. 常量类型和结构1.6. 访问标志1.7. 类索引、父类索引、接口索引1.7.1. this_class(类索引)1.7.2. super_class(父类索引)1.7.3. interfacesⅠ. interfaces_count(原创 2021-12-23 20:11:48 · 666 阅读 · 0 评论 -
JVM下篇:性能监控与调优篇
性能监控与调优篇之【01-概述篇】性能监控与调优篇之【02-JVM监控及诊断工具-命令行篇】性能监控与调优篇之【3. JVM 监控及诊断工具-GUI 篇】性能监控与调优篇之【04-JVM运行时参数】性能监控与调优篇之【05-分析GC日志】性能监控与调优篇之【浅堆深堆与内存泄露】使用 OQL 语言查询对象信息...原创 2021-12-20 21:05:02 · 152 阅读 · 0 评论 -
使用 OQL 语言查询对象信息
文章目录补充:使用 OQL 语言查询对象信息1. SELECT 子句2. FROM 子句3. WHERE 子句4. 内置对象与方法补充:使用 OQL 语言查询对象信息MAT 支持一种类似于 SQL 的查询语言 OQL(Object Query Language)。OQL 使用类 SQL 语法,可以在堆中进行对象的查找和筛选。1. SELECT 子句在 MAT 中,Select 子句的格式与 SQL 基本一致,用于指定要显示的列。Select 子句中可以使用“*”,查看结果对象的引用实例(相当于 ou原创 2021-12-20 20:59:03 · 1201 阅读 · 0 评论 -
性能监控与调优篇之【浅堆深堆与内存泄露】
文章目录补充:浅堆深堆与内存泄露1. 浅堆(Shallow Heap)2. 保留集(Retained Set)3. 深堆(Retained Heap)4. 对象的实际大小5. 支配树(Dominator Tree)6. 内存泄漏(memory leak)7. 内存溢出(out of memory)8. Java 中内存泄露的 8 种情况8.1. 静态集合类8.2. 单例模式8.3. 内部类持有外部类8.4. 各种连接,如数据库连接、网络连接和 IO 连接等8.5. 变量不合理的作用域8.6. 改变哈希值8.原创 2021-12-20 20:58:31 · 842 阅读 · 0 评论 -
性能监控与调优篇之【05-分析GC日志】
文章目录5. 分析 GC 日志5.1. GC 分类5.2. GC 日志分类5.3. GC 日志结构剖析5.4. GC 日志分析工具5. 分析 GC 日志5.1. GC 分类针对 HotSpot VM 的实现,它里面的 GC 按照回收区域又分为两大种类型:一种是部分收集(Partial GC),一种是整堆收集(Full GC)部分收集(Partial GC):不是完整收集整个 Java 堆的垃圾收集。其中又分为:新生代收集(Minor GC / Young GC):只是新生代(Eden / S原创 2021-12-20 20:56:43 · 407 阅读 · 0 评论 -
性能监控与调优篇之【04-JVM运行时参数】
文章目录4. JVM 运行时参数4.1. JVM 参数选项4.1.1. 类型一:标准参数选项4.1.2. 类型二:-X 参数选项4.1.3. 类型三:-XX 参数选项4.2. 添加 JVM 参数选项4.3. 常用的 JVM 参数选项4.3.1. 打印设置的 XX 选项及值4.3.2. 堆、栈、方法区等内存大小设置4.3.3. OutOfMemory 相关的选项4.3.4. 垃圾收集器相关选项4.3.5. GC 日志相关选项4.3.6. 其他参数4.4. 通过 Java 代码获取 JVM 参数4. JVM原创 2021-12-20 20:56:00 · 675 阅读 · 0 评论 -
性能监控与调优篇之【03. JVM 监控及诊断工具-GUI 篇】
文章目录3. JVM 监控及诊断工具-GUI 篇3.1. 工具概述3.2. JConsole3.3. Visual VM3.4. Eclipse MAT3.5. JProfiler3.6. Arthas3.7. Java Misssion Control3.8. 其他工具3. JVM 监控及诊断工具-GUI 篇3.1. 工具概述使用上一章命令行工具或组合能帮您获取目标 Java 应用性能相关的基础信息,但它们存在下列局限:1.无法获取方法级别的分析数据,如方法间的调用关系、各方法的调用次数和调用时原创 2021-12-20 20:54:03 · 672 阅读 · 1 评论 -
性能监控与调优篇之【02-JVM监控及诊断工具-命令行篇】
文章目录2. JVM 监控及诊断工具-命令行篇2.1. 概述2.2. jps:查看正在运行的 Java 进程2.3. jstat:查看 JVM 统计信息2.4. jinfo:实时查看和修改 JVM 配置参数2.5. jmap:导出内存映像文件&内存使用情况2.6. jhat:JDK 自带堆分析工具2.7. jstack:打印 JVM 中线程快照2.8. jcmd:多功能命令行2.9. jstatd:远程主机信息收集2.9. jstatd:远程主机信息收集2. JVM 监控及诊断工具-命令行篇2.原创 2021-12-20 20:53:11 · 527 阅读 · 0 评论 -
性能监控与调优篇之【01-概述篇】
文章目录1. 概述篇1.1. 大厂面试题1.2. 背景说明1.3. 调优概述1.4. 性能优化的步骤1.5. 性能评价/测试指标1. 概述篇1.1. 大厂面试题支付宝:支付宝三面:JVM 性能调优都做了什么?小米:有做过 JVM 内存优化吗?从 SQL、JVM、架构、数据库四个方面讲讲优化思路蚂蚁金服:JVM 的编译优化jvm 性能调优都做了什么JVM 诊断调优工具用过哪些?二面:jvm 怎样调优,堆内存、栈空间设置多少合适三面:JVM 相关的分析工具使用过的有哪些?具体的性能调原创 2021-12-20 20:51:53 · 353 阅读 · 0 评论 -
JVM-13. 垃圾回收器
文章目录13. 垃圾回收器13.1. GC 分类与性能指标13.1.1. 垃圾回收器概述13.1.2. 垃圾收集器分类13.1.3. 评估 GC 的性能指标吞吐量暂停时间吞吐量 vs 暂停时间13.2. 不同的垃圾回收器概述13.2.1. 垃圾回收器发展史13.2.2. 7 种经典的垃圾收集器13.2.3. 7 款经典收集器与垃圾分代之间的关系13.2.4. 垃圾收集器的组合关系13.2.5. 不同的垃圾收集器概述13.2.6. 如何查看默认垃圾收集器13.3. Serial 回收器:串行回收13.4. P原创 2021-12-02 09:24:50 · 347 阅读 · 0 评论 -
JVM-12. 垃圾回收相关概念
文章目录12. 垃圾回收相关概念12.1. System.gc()的理解12.2. 内存溢出与内存泄露内存溢出(OOM)内存泄漏(Memory Leak)12.3. Stop The World12.4. 垃圾回收的并行与并发并发(Concurrent)并行(Parallel)并发 vs 并行垃圾回收的并发与并行并行(Parallel)串行(Serial)并发(Concurrent)12.5. 安全点与安全区域安全点抢先式中断:(目前没有虚拟机采用了)主动式中断安全区域(Safe Resion)实际执行时:原创 2021-12-02 09:24:15 · 638 阅读 · 0 评论 -
JVM-11. 垃圾回收概述及算法
文章目录11. 垃圾回收概述及算法11.1. 垃圾回收概述11.1.1. 什么是垃圾?什么是垃圾?11.1.2. 为什么需要 GC11.1.3. 早期垃圾回收11.1.4. Java 垃圾回收机制担忧GC 主要关注的区域11.2. 垃圾回收相关算法11.2.1. 标记阶段:引用计数算法方式一:引用计数算法循环引用小结11.2.2. 标记阶段:可达性分析算法可达性分析算法(根搜索算法、追踪性垃圾收集)基本思路11.2.3. 对象的 finalization 机制生存还是死亡?具体过程11.2.4. MAT 与原创 2021-12-02 09:23:36 · 1358 阅读 · 0 评论 -
JVM-10. StringTable
文章目录10. StringTable10.1. String 的基本特性10.1.1. String 在 jdk9 中存储结构变更MotivationDescription10.1.2. String 的基本特性10.2. String 的内存分配10.3. String 的基本操作10.4. 字符串拼接操作10.5. intern()的使用10.5.1. intern 的使用:JDK6 vs JDK7/810.5.2. intern 的效率测试:空间角度10.6. StringTable 的垃圾回收10原创 2021-12-01 22:52:51 · 502 阅读 · 0 评论 -
JVM-9. 执行引擎
文章目录9. 执行引擎9.1. 执行引擎概述9.1.1. 执行引擎的工作流程9.2. Java 代码编译和执行过程9.2.1. 什么是解释器(Interpreter)?什么是 JIT 编译器?9.2.2. 为什么 Java 是半编译半解释型语言?9.3. 机器码、指令、汇编语言9.3.1. 机器码9.3.2. 指令9.3.3. 指令集9.3.4. 汇编语言9.3.5. 高级语言C、C++源程序执行过程9.3.6. 字节码9.4. 解释器9.4.1. 解释器工作机制9.4.2. 解释器分类9.4.3. 现状9原创 2021-12-01 22:52:19 · 716 阅读 · 0 评论 -
JVM-7. 方法区
文章目录7. 方法区7.1. 栈、堆、方法区的交互关系7.2. 方法区的理解7.2.1. 方法区在哪里?7.2.2. 方法区的基本理解7.2.3. HotSpot 中方法区的演进7.3. 设置方法区大小与 OOM7.3.1. 设置方法区内存的大小7.3.2. 如何解决这些 OOM7.4. 方法区的内部结构7.4.1. 方法区(Method Area)存储什么?7.4.2. 方法区的内部结构类型信息域(Field)信息方法(Method)信息non-final 的类变量补充说明:全局常量(static fin原创 2021-12-01 22:41:42 · 689 阅读 · 0 评论 -
JVM-6. 堆
文章目录6. 堆6.1. 堆(Heap)的核心概述6.1.1. 堆内存细分6.1.2. 堆空间内部结构(JDK7)6.1.3. 堆空间内部结构(JDK8)6.2. 设置堆内存大小与 OOM6.2.1. 堆空间大小的设置6.2.2. OutOfMemory 举例6.3. 年轻代与老年代6.4. 图解对象分配过程6.5. Minor GC,MajorGC、Full GC6.5.1. 最简单的分代式 GC 策略的触发条件年轻代 GC(Minor GC)触发机制老年代 GC(Major GC / Full GC)触原创 2021-12-01 22:40:54 · 218 阅读 · 0 评论 -
JVM-5. 本地方法接口和本地方法栈
文章目录5. 本地方法接口和本地方法栈5.1. 什么是本地方法?5.2. 为什么使用 Native Method?5.2. 本地方法栈5. 本地方法接口和本地方法栈5.1. 什么是本地方法?简单地讲,一个 Native Method 是一个 Java 调用非 Java 代码的接囗。一个 Native Method 是这样一个 Java 方法:该方法的实现由非 Java 语言实现,比如 C。这个特征并非 Java 所特有,很多其它的编程语言都有这一机制,比如在 C++中,你可以用 extern “c”原创 2021-12-01 22:40:00 · 172 阅读 · 0 评论 -
JVM-4. 虚拟机栈
文章目录4. 虚拟机栈4.1. 虚拟机栈概述4.1.1. 虚拟机栈出现的背景4.1.2. 初步印象4.1.3. 内存中的栈与堆4.1.4. 虚拟机栈基本内容Java 虚拟机栈是什么?生命周期作用栈的特点面试题:开发中遇到哪些异常?4.2. 栈的存储单位4.2.1. 栈中存储什么?4.2.2. 栈运行原理4.2.3. 栈帧的内部结构4.3. 局部变量表(Local Variables)4.3.1. 关于 Slot 的理解4.3.2. Slot 的重复利用4.3.3. 静态变量与局部变量的对比4.3.4. 补充原创 2021-12-01 22:39:03 · 993 阅读 · 0 评论 -
JVM-3. 运行时数据区及程序计数器
文章目录3. 运行时数据区及程序计数器3.1. 运行时数据区3.1.1. 概述3.1.2. 线程3.1.3. JVM 系统线程3.2. 程序计数器(PC 寄存器)3. 运行时数据区及程序计数器3.1. 运行时数据区3.1.1. 概述本节主要讲的是运行时数据区,也就是下图这部分,它是在类加载完成后的阶段当我们通过前面的:类的加载-> 验证 -> 准备 -> 解析 -> 初始化 这几个阶段完成后,就会用到执行引擎对我们的类进行使用,同时执行引擎将会使用到我们运行时数据区内原创 2021-12-01 22:37:57 · 263 阅读 · 0 评论 -
JVM-2. 类加载子系统
文章目录2. 类加载子系统2.1. 内存结构概述2.2. 类加载器与类的加载过程加载阶段链接阶段初始化阶段2.3. 类加载器分类2.3.1. 虚拟机自带的加载器2.3.2. 用户自定义类加载器2.4. ClassLoader 的使用说明2.5. 双亲委派机制2.6. 其他2. 类加载子系统2.1. 内存结构概述Class 文件类加载子系统运行时数据区方法区堆程序计数器虚拟机栈本地方法栈执行引擎本地方法接口本地方法库如果自己想手写一个 Java 虚拟机的话,主要考虑哪原创 2021-12-01 22:36:48 · 1005 阅读 · 0 评论 -
JVM-1.JVM 与 Java 体系结构
文章目录1.JVM 与 Java 体系结构1.1. 前言1.2. 面向人群及参考书目1.3. Java 及 JVM 简介1.4. Java 发展的重大事件1.5. 虚拟机与 Java 虚拟机1.6. JVM 的整体结构1.7. Java 代码执行流程1.8. JVM 的架构模型1.9. JVM 的生命周期X. JVM 的发展历程Sun Classic VMExact VMHotSpot VMJRockitIBM 的 J9KVM 和 CDC / CLDC HotspotAzul VMLiquid VMApac原创 2021-12-01 22:34:40 · 616 阅读 · 0 评论 -
JVM上篇:内存与垃圾回收篇-笔记
JVM上篇:内存与垃圾回收篇 学习笔记和代码过程加面试题原创 2021-12-01 20:48:52 · 540 阅读 · 0 评论 -
JVM-8. 对象实例化及直接内存
对象实例化及直接内存原创 2021-11-30 21:13:49 · 1347 阅读 · 0 评论