JVM调优基本概念

105 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第27天,点击查看活动详情

1、jvm组成以工作流程

jvm组成

类装载器、运行时数据区(内存模型)、字节码执行引擎

工作大致流程

首先我们的java类编译成class类文件,当我们的class文件开始执行,我们的虚拟机便开始工作。 类加载器将class加载到运行时数据区,然后字节码执行引擎工作

image.png

这里大家思考一下我们的调优主要是对那个组成部分调优呢?没错,就是我们的运行时数据区进行调优的!

有兴趣的同学可以看一下底层的二进制文件,因为二进制的文件是我们计算机执行的,我们看不懂,我们可以通过javap命令反编译汇编语言,得到新的文件,在官网查看每行代码对应的什么意思即可!

这是通过一段代码执行,总结的一张main方法在运行时数据区的数据图:

image.png

垃圾回收

将“GC Roots”对象作为七点,从这些节点开始向下搜索引用的对象,找到的对象标记为“非垃圾对象”,其余未标记的对象是垃圾对象。

GC Roots根节点:线程栈的本地变量、静态变量、本地方法栈的变量等等。

STW(Stop-The-World):  是在垃圾回收算法执⾏过程当中,将JVM内存冻结丶应用程序停顿的⼀种状态。

也就是说在STW状态下,所有的java线程都是停止状态的(GC线程除外)

这里提前透露一下,我们GC的优化重点就是减少STW的时间,并且我们JVM调优的重点也是STW操作。

堆内部的流转过程:

image.png

调优工具

1、java VisualVM (java自带工具)

2、阿里巴巴Arthas工具(阿里巴巴集团开源调优工具)

今天的基本概念就先讲到这,感谢大家的关注!