JVM基础

目录

JVM组成部分

字节码

一般信息

常量池

方法

面试常见问题

查看字节码的工具

javap(适用于程序部署后)

jclasslib插件(适用于本地调试)

arthas(适用于程序处于运行中使用)

arthas的安装

查看 dashboard

dump查看字节码

jad查看原代码

类的生命周期

类加载

连接

验证

准备

解析

初始化

初始化的内容

触发类初始化的时机

不会触发初始化的情况

类加载器

类加载器的分类

使用arthas查看程序中类加载器的情况

启动类加载器

拓展类加载器与应用程序加载器

双亲委派机制

面试:类的双亲委派机制是什么?

打破双亲委派机制的三种方式

自定义类加载器​编辑

线程上下文类加载器

使用阿里arthas不停机解决线上问题

JDK9后加载器的变化

运行时数据区

程序计数器

Java虚拟机栈

栈帧

局部变量表

操作数栈

帧数据---动态链接

帧数据---方法出口

帧数据---异常表

内存溢出与虚拟机栈的大小设置

本地方法栈

方法区

intern() 

直接内存

自动垃圾回收器

方法区的回收

堆回收

垃圾标记算法

几种对象引用

垃圾回收算法

垃圾回收器

底部


JVM组成部分

字节码

字节码文件的查看工具:https://github.com/ingokegel/jclasslib

一般信息

JDK与字节码版本不兼容报错异常如下:

常量池

方法

面试常见问题

i++时,i的值为0;而++1时,i的值为1

public class A {
    public static void main(String[] args) {
        int i = 0, j = 0, k = 0;
        i++;
        j = j + 1;
        k += 1;
    }
}

查看字节码的工具

javap(适用于程序部署后)

jclasslib插件(适用于本地调试)

arthas(适用于程序处于运行中使用)

下载 | arthas (aliyun.com)icon-default.png?t=O83Ahttps://arthas.aliyun.com/doc/download.html

arthas的安装

安装请按照官方文档执行

快速入门 | arthas (aliyun.com)icon-default.png?t=O83Ahttps://arthas.aliyun.com/doc/quick-start.html#_1-%E5%90%AF%E5%8A%A8-math-game

查看 dashboard

dashboard | arthas (aliyun.com)icon-default.png?t=O83Ahttps://arthas.aliyun.com/doc/dashboard.html

dump查看字节码

jad查看原代码

类的生命周期

类加载

类加载器将类的信息加载到内存中,jvm在方法区和堆区各分配一个对象,用于保存类的信息

连接

验证

准备

解析

初始化

初始化的内容

触发类初始化的时机

不会触发初始化的情况

类加载器

类加载器的分类

使用arthas查看程序中类加载器的情况

启动类加载器

拓展类加载器与应用程序加载器

双亲委派机制

面试:类的双亲委派机制是什么?

打破双亲委派机制的三种方式

自定义类加载器

线程上下文类加载器

使用阿里arthas不停机解决线上问题

JDK9后加载器的变化

运行时数据区

程序计数器

Java虚拟机栈

栈帧

局部变量表

操作数栈

帧数据---动态链接

帧数据---方法出口

帧数据---异常表

内存溢出与虚拟机栈的大小设置

本地方法栈

方法区

intern() 

直接内存

自动垃圾回收器

方法区的回收

观察类被加载和卸载

堆回收

垃圾标记算法

几种对象引用

垃圾回收算法

垃圾回收器

底部

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值