写点什么

全方位认识 JVM

作者:Ayue、
  • 2021 年 12 月 04 日
  • 本文字数:1008 字

    阅读完需:约 3 分钟

全方位认识 JVM

为什么要去了解 Java 虚拟机?

对于这个问题,我想大多数人的回答都是:因为面试。但实际上,学习虚拟机并不仅仅在于面试,而在于更深入地理解 Java 这门语言,以及为未来排查线上问题和优化打下基础。


1.初识 JVM 的内存结构

作者:Ayue、

这篇文章描述了 Java 虚拟机的内存结构,内存每个区域作用,如何通过参数对各个区域进行控制。


2.JVM 中的对象及引用

作者:Ayue、

在了解 JVM 的内存结构之后,我们可以分析对象在 JVM 中是如何创建的,对象的内存布局,怎么判断对象的存活,对象的四大引用,对象的分配策略。


3.JVM 分代回收机制和垃圾回收算法

作者:Ayue、

对于 JVM 中产生的对象,JVM 有属于自己的一套垃圾回收机制,本文介绍了常见的垃圾回收算法,如:单线程的 Serial/Serial Old,并行的 Parallel Scavenge/Parallel Old,多线程 CMS/G1,以及一些 GC 参数。


4.JVM 类加载机制

作者:Ayue、

对象的创建过程第一步是需要检查这个类是否被类加载器加载,如果没有,那必须先执行相应的类加载过程,即把 class 加载到 JVM 的运行时数据区。


5.了解 JVM 的方法调用

作者:Ayue、

我们写的代码,经过编译、经过类加载的各种阶段,进入了 JVM 的运行时数据区。但作为程序员真正关心是代码的执行,代码的执行其实本质上是方法的执行,站在 JVM 的角度归根到底还是字节码的执行。main 函数是 JVM 指令执行的起点,JVM 会创建 main 线程来执行 main 函数,以触发 JVM 一系列指令的执行,真正地把 JVM 跑起来。接着,在我们的代码中,就是方法调用方法的过程,所以了解方法在 JVM 中的调用是非常必要的。


6.JVM 性能诊断工具

作者:Ayue、

在开发,运行 Java 应用时,难免会遇到应用运行性能低效,内存泄露等问题,那么我们就需要借助分析工具去分析,优化应用系统,也就是常说的性能调优,而 JDK 自带的诊断工具可以有效的帮助我们快速定位问题。如:jps,jstack,jinfo等。


7.Arthas 阿里开源的 Java 诊断工具

作者:Ayue、

除了 JVM 自带的性能诊断工具,我们也可以借助其他的工具,如 Arthas,它支持 JDK 6+,支持 Linux/Mac/Windows,采用命令行交互模式,同时提供丰富的 Tab 自动补全功能,进一步方便进行问题的定位和诊断,相比 JVM 自带的性能诊断工具在观感上有一定提升。


8.JVM 性能调优之内存优化与 GC 优化实战

作者:Ayue、

在熟悉了 JVM 的工作原理以及一些常用的调优工具之后,最主要的就是要在实际工作中能通过以上知识去进行优化,本文主要通过 9 个场景来演示合理的选择调优策略。

发布于: 3 小时前阅读数: 12
用户头像

Ayue、

关注

还未添加个人签名 2019.10.16 加入

学习知识,目光坚毅

评论

发布
暂无评论
全方位认识 JVM