
JVM
文章平均质量分 95
JVM学习笔记。
Kaiz‘s Blog
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
JVM常见命令行及图形工具
目录JDK 命令行工具jps:查看所有 Java 进程jinfo:实时地查看和调整虚拟机各项参数jstat:监视虚拟机各种运行状态信息jmap:生成堆转储快照jhat:分析 heapdump 文件jstack :生成虚拟机当前时刻的线程快照jcmd:执行 JVM 相关分析命令(整合命令)JDK 可视化分析工具jsonsole:Java 监视与管理控制台连接 Jconsole查看 Java 程序概况内存监控线程监控VM概要jvisualvmVisualGCjmc文章后续更改会放置于:https://git原创 2021-05-29 15:38:12 · 922 阅读 · 1 评论 -
JVM常用启动参数
目录JVM常用启动参数系统属性参数运行模式参数堆内存设置参数显式指定堆内存`–Xms`和`-Xmx`显式新生代内存显示指定永久代/元空间的大小其他常用参数GC设置参数垃圾回收器GC记录分析诊断参数JavaAgent参数文章放置于:https://github.com/zgkaii/CS-Study-Notes,欢迎批评指正!JVM常用启动参数JVM启动参数的前缀主要有-、-D、-X、-XX、+/-、:以-开头为标准参数,所以的JVM都要实现这些参数,并且向后兼容。例如-server。-D原创 2021-05-29 10:07:29 · 5405 阅读 · 1 评论 -
‘【JVM学习】方法调用与动态语言
文章目录一、方法调用(1)静态链接与动态链接(2)早期绑定与晚期绑定(3)虚方法和非虚方法(4)方法调用指令二、动态语言一、方法调用(1)静态链接与动态链接在JVM中,将符号引用转换为调用方法的直接引用与方法的绑定机制相关。静态链接当一个字节码文件被装载进JVM内部时,如果被调用的目标方法在编译期可知,且运行期保持不变时,这种情况下降调用方法的符号引用转换为直接引用的过程称之为静态链接。动态链接如果被调用的方法在编译期无法被确定下来,也就是说,只能够在程序运行期将调用的方法的符号转换为原创 2020-11-06 15:29:02 · 516 阅读 · 1 评论 -
【JVM学习】对象实例化内存布局与访问定位
文章目录一、对象实例化1.1 对象创建方式1.2 创建对象的步骤(1)判断对象对应的类是否加载、链接、初始化(2)为对象分配内存(3)处理并发问题(4)初始化分配到的内存(5)设置对象的对象头(6)执行init方法进行初始化二、对象内存布局(1)对象头三、对象的访问定位3.1 对象访问的两种方式(1)句柄访问(2)直接指针(HotSpot采用)一、对象实例化1.1 对象创建方式new:常见的使用 new 关键字创建对象、单例类中调用getInstance的静态类方法、XxxFactory/XxxB原创 2020-10-25 23:30:54 · 648 阅读 · 0 评论 -
【JVM学习】Class字节码文件结构
class字节码文件结构类型名称说明长度数量u4magic魔数,识别Class文件格式4个字节1u2minor_version副版本号(小版本)2个字节1u2major_version主版本号(大版本)2个字节1u2constant_pool_count常量池计数器2个字节1cp_infoconstant_pool常量池表n个字节constant_pool_count-1u2access_flags访问标识原创 2020-10-19 11:01:32 · 301 阅读 · 0 评论 -
【JVM学习】JVM指令手册
文章目录一、栈和局部变量操作将常量压入栈的指令从栈中的局部变量中装载值的指令将栈中的值存入局部变量的指令通用(无类型)栈操作二、类型转换三、整数运算四、逻辑运算移位操作按位布尔运算浮点运算五、对象和数组对象操作指令数组操作指令六、控制流条件分支指令比较指令无条件转移指令表跳转指令异常七、方法调用与返回方法调用指令方法返回指令线程同步八、JVM指令助记符一、栈和局部变量操作将常量压入栈的指令aconst_null 将null对象引用压入栈iconst_m1 将int类型常量-1压入栈iconst_0原创 2020-10-19 11:00:37 · 698 阅读 · 0 评论 -
【JVM学习】垃圾回收器
文章目录一、GC分类与性能指标1.1 垃圾收集器分类(1)按线程数分(2)按工作模式分(3)其他分类1.2 性能指标(1)性能指标:吞吐量(2)性能指标:暂停时间(3)吞吐量vs暂停时间二、不同的垃圾回收器概述2.1 垃圾回收器发展史2.2 7种经典的垃圾收集器2.3 垃圾收集器的组合关系三、Serial回收器:串行回收四、ParNew回收器:并行回收五、Parallel回收器:吞吐量优先六、CMS回收器:低延迟6.1 概述6.2 优缺点分析6.3 设置参数七、G1回收器:区域化分代式7.1 概述7.2 优原创 2020-10-15 15:54:10 · 1150 阅读 · 0 评论 -
【JVM学习】垃圾回收相关概念
文章目录一、System.gc()的理解二、内存溢出与内存泄漏2.1 内存溢出2.3 内存泄漏三、Stop The World四、垃圾回收的并行与并发4.1 并行与并发4.2 垃圾回收的并行与并发五、安全点与安全区域5.1 安全点5.2 安全区域六、再谈引用6.1 强引用:不回收6.2 软引用:内存不足回收6.3 弱引用:发现即回收6.4 虚引用:对象回收跟踪一、System.gc()的理解在默认情况下,通过system.gc()者Runtime.getRuntime().gc() 的调用,会显式触发F原创 2020-10-15 01:02:02 · 417 阅读 · 0 评论 -
【JVM学习】垃圾回收相关算法
文章目录一、标记阶段:引用计数算法二、标记阶段:可达性分析算法2.1 概述2.2 对象的finalization机制三、清除阶段:标记-清除算法四、清除阶段:复制算法五、清除阶段:标记-整理(压缩)算法六、其他算法6.1 分代收集算法6.2 增量收集算法6.3 分区算法GC 标记-清除算法由标记阶段和清除阶段构成。在标记阶段会把所有的活动对象都做上标记,然后在清除阶段会把没有标记的对象(非活动对象)回收。一、标记阶段:引用计数算法在垃圾标记阶段,JVM将标记所有活动对象。判断对象存活一般有两种方式:引原创 2020-10-15 00:57:48 · 917 阅读 · 0 评论 -
【JVM学习】执行引擎
文章目录一、执行引擎概述1.1 概述1.2 执行引擎的工作流程二、Java代码编译和执行过程三、机器码、指令、汇编语言3.1 机器码3.2 指令3.3 高级语言3.4 字节码四、解释器五、JIT编译器5.1 Java代码的执行分类5.2 HotSpot JVM执行方式5.3 概念解释(1)热点探测技术(2)方法调用计数器(3)热点衰减(4)回边计数器5.4 JIT 分类5.5 AOT编译器参考一、执行引擎概述1.1 概述执行引擎(Execution Engine)是Java虚拟机核心的组成部分之一。原创 2020-10-14 09:26:57 · 636 阅读 · 0 评论 -
【JVM学习】方法区
文章目录一、概述1.1 方法区理解1.2 方法区的演进1.3 设置方法区大小二、方法区的内部结构2.1 类型信息2.2 域信息2.3 方法信息2.4 non-final的类变量2.5 运行时常量池(1)常量池(2)运行时常量池(3)图解实例2.6 方法区的演进细节三、方法区的垃圾回收参考一、概述1.1 方法区理解《Java虚拟机规范》中明确说明:“尽管所有的方法区在逻辑上是属于堆的一部分,但一些简单的实现可能不会选择去进行垃圾收集或者进行压缩。”但对于HotSpot JVM而言,方法区还有一个别名叫做原创 2020-10-10 23:35:44 · 407 阅读 · 0 评论 -
【JVM学习】本地方法栈、堆
文章目录一、本地方法栈1.1 本地方法接口(1)什么是本地方法(2)为什么使用本地方法1.2 本地方法栈二、堆核心概述2.1 堆内存细分2.2 设置堆内存大小2.4 年轻代与老年代2.5 堆对象分配过程(1)概念(2)对象分配的特殊情况(3)常用的调优工具2.6 Minor GC,Major GC、Full GC(1)Minor GC(2)Major GC(3)Full GC三、堆空间分代3.1 堆空间分代思想3.2 内存分配策略3.3 对象分配内存:TLAB3.4 堆空间的参数设置3.5 逃逸分析(1)概原创 2020-10-10 20:49:21 · 914 阅读 · 0 评论 -
【JVM学习】程序计数器、虚拟机栈
文章目录一、运行时数据区1.1 概述1.2 JVM系统线程二、程序计数器2.1 概述2.2 作用三、虚拟机栈3.1 概述3.2 栈的存储单位(1)栈帧(2)栈运行原理(3)栈帧的内部结构3.3 局部变量表(1)概述(2)关于Slot的理解(3)静态变量与局部变量的对比3.4 操作数栈(1)概述(2)代码追踪(3)栈顶缓存技术3.5 动态链接3.6 方法返回地址3.7 附加信息参考一、运行时数据区1.1 概述内存是非常重要的系统资源,是硬盘和CPU的中间仓库及桥梁,承载着操作系统和应用程序的实时运行。J原创 2020-10-10 20:24:14 · 642 阅读 · 0 评论 -
【JVM学习】类加载子系统
文章目录一、类加载器子系统1.1 JVM体系结构1.2 类加载器子系统作用1.3 类的加载过程(1)加载阶段(2)链接阶段(3)初始化阶段二、类加载器2.1 类加载器的分类2.2 虚拟机自带的加载器2.3 用户自定义类加载器2.4 ClassLoader类三、双亲委派机制3.1 工作原理3.2 双亲委派机制举例3.3 双亲委派机制的优势3.4 沙箱安全机制四、补充5.1 比较class对象5.2 类的主动使用和被动使用参考一、类加载器子系统1.1 JVM体系结构JVM被分为三个主要的子系统:(1)原创 2020-10-06 21:57:22 · 854 阅读 · 0 评论 -
JVM与JAVA体系结构
文章目录一、Java生态圈二、虚拟机与Java虚拟机2.1 虚拟机2.2 Java虚拟机2.3 JVM的位置2.4 JVM整体结构2.5 Java代码执行流程2.6 JVM的架构模型三、JVM生命周期3.1 虚拟机的启动3.2 虚拟机的执行3.3 虚拟机的退出四、JVM虚拟机分类4.1 HotSpot VM4.2 JRockit4.3 IBM的J94.4 Azul VM4.5 KVM和CDC / CLDC Hotspot4.6 Sun Classic VM4.7 Apache Marmony4.8 Tao原创 2020-10-05 21:23:21 · 813 阅读 · 1 评论