如何啃下JVM这座大山,完结撒花

本文详细介绍了JVM的学习路径,包括类加载过程、垃圾回收算法、各种垃圾收集器、运行时数据区域、JVM常用命令及性能检测工具的使用。通过实例分析了JVM调优的重要性,如选择合适的垃圾收集器、调整内存大小等,以应对实际问题,如网站流量激增导致的性能问题和后台导出数据引发的内存溢出。
摘要由CSDN通过智能技术生成

JVM往期系列:

大家好,我是楼仔!JVM系列是我去年写的,整个学习周期是一个半月,作为Java必备技能之一,非常重要,所以感觉有必要对之前的JVM系列重新整理,单独出一篇文章。

JVM的学习轨迹,可以先通过该文章学习,然后对照《深入理解Java虚拟机》书籍把重点知识过一遍,最后最好能实战一下,下面是文章目录:

类的加载过程

加载过程介绍

如果 JVM 想要执行这个 .class 文件,我们需要将其装进一个类加载器 中,它就像一个搬运工一样,会把所有的 .class 文件全部搬进JVM里面来。

重点知识:

  • Java文件经过编译后变成 .class 字节码文件

  • 字节码文件通过类加载器被搬运到 JVM 虚拟机中

  • 虚拟机主要的5大块:方法区,堆都为线程共享区域,有线程安全问题,栈和本地方法栈和计数器都是独享区域,不存在线程安全问题,而 JVM 的调优主要就是围绕堆,栈两大块进行。

类加载流程

类加载的过程包括了加载、验证、准备、解析、初始化五个阶段。在这五个阶段中,加载、验证、准备和初始化这四个阶段发生的顺序是确定的,而解析阶段则不一定,它在某些情况下可以在初始化阶段之后开始,这是为了支持Java语言的运行时绑定(也成为动态绑定或晚期绑定)。另外注意这里的几个阶段是按顺序开始,而不是按顺序进行或完成,因为这些阶段通常都是互相交叉地混合进行的,通常在一个阶段执行的过程中调用或激活另一个阶段。

  • 加载,查找并加载类的二进制数据,在Java堆中也创建一个java.lang.Class类的对象

  • 连接,连接又包含三块内容:验证、准备、初始化。1)验证,文件格式、元数据、字节码、符号引用验证;2)准备,为类的静态变量分配内存,并将其初始化为默认值;3)解析,把类中的符号引用转换为直接引用

  • 初始化,为类的静态变量赋予正确的初始值

  • 使用,new出对象程序中使用

  • 卸载,执行垃圾回收

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值