JVM教程

概论

  1. BEA公司

java中间件软件公司, 已被Oracle收购

  1. OpenJDK项目

GPL协议

  1. 编译执行和解释执行

java是静态语言, 但是用hotSpot的话是解释与编译混合执行的模式; python是脚本语言

  1. JIT技术

及时编译器(Just-In-Time)

  1. jvm调优之分层编译

不是很明白, 为什么使用分层编译之后就削峰了, jit在运行到一定频率执行也是削峰啊

  1. jvm的技术难点举例
  1. 多租户JVM
  2. Wisp协程技术
  3. 大数据场景的ZenGC

1. 字节码

图1-1 类的二进制字节码

1.1 字节码指令

  1. 栈帧

栈帧是一个内存区块

  1. JVM内存模型:虚拟机栈与本地方法栈
  1. 虚拟机栈-栈帧
    1.1 局部变量表
    1.2 操作数栈
    1.3 动态链接
    1.4 方法出口
  2. StackOverFlowError
  3. OutOfMemoryError
  1. JVM 栈帧之操作数栈与局部变量表

基于栈的设计模式, 用了栈还是得走一遍寄存器啊

1.2 源码转化成字节码过程

图1-2 源码转化成字节码的过程

  1. (编译原理)java实现词法分析器

这篇文章还是没啥用

1.3 即时编译流程

图1-3 即时编译流程

2. 类加载过程

2.1 类加载过程

图 1-4 Java类加载过程
类加载是一个将.class字节码文件实例化成Class对象并进行相关初始化的过程

2.2 双亲委派模型

图1-4 双亲委派模型

  1. idea配置jvm启动参数

这里只能用什么配什么, 看不到原配置

  1. IDEA调试技巧之条件断点

有用

  1. -XX:+TraceClassLoading

在启动项目时可以显示类加载顺序, 比较实用

  1. 需要自定义类加载器的情况
  1. 隔离加载类
  2. 修改类的加载方式
  3. 扩展加载源
  4. 防止源码泄漏

3 内存布局

3.1 经典的jvm内存布局

图 1-8 经典的JVM内存布局

3.1.1 堆区

图1-9 对象分配与简要GC流程图

3.1.2 元空间

3.1.3 虚拟机栈

图1-11 操作栈的压栈与出栈

先进后出的数据结构

  1. JVM运行环境

基于栈结构的运行环境

  1. 寄存器

CPU的组成部分
用来暂存指令和数据还有地址

  1. 虚拟机栈

描述Java方法执行限额内存区域
线程私有

1. 局部变量表
2. 操作栈
  1. 操作栈

初始状态为空的桶式结构栈

  1. 桶式结构

后进先出

  1. 操作栈总结

操作栈在虚拟机栈中, 那就是栈中栈咯

3. 动态链接
4. 方法返回地址

3.1.4 本地方法栈

3.1.5 程序计数寄存器

4 面试

悲观策略之Parallel GC

JVM调优之-Xms与-Xmx参数

Parallel 收集器

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值