Java-JVM-学习笔记

一、JVM介绍

1、JVM 简介

  • JVM是虚拟机的英文简称。它是java运行环境的一部分,是一个虚构出来的计算机,它是通过在实际的计算机上仿真模拟各种计算机功能来实现的
  • java编写出来的代码->中间码(字节码)->JVM虚拟机执行->物理机操作系统

2、JVM分类

  • 最有影响力的三大商用虚拟机
  • HotSpot VM
  • BEA JRockit
  • IBM J9

2.1 HotSpot VM

  • 目前市面上高性能的java虚拟机的代表作品之一。
  • 解释器与即时编译器共存
  • 栈架构

2.2 Sun Classsic VM

  • java的第一款商用虚拟机
  • 只提供解释器
  • 使用JIT编译器,需要外挂,外挂使用后,解释器便不再工作

2.3 BEA JRockit

  • 专业的服务器端应用
  • 不包含解释器,初始化时间较长
  • 通用型世界上最块的JVM
  • 针对延迟敏感型应用

其他

  • IBM J9 IBM商用虚拟机()
  • Exact VM jdk1.2的虚拟机
  • KVM 是CLDC-HI早期产品
  • CDC/CLDC Hotspot 目前在更低端的设备上使用,智能控制器、传感器、老人机,欠发达地区手机
  • Azul VM (特定硬件平台绑定、软硬件配合专有虚拟机)每个实例至少管理数十个CPU和数百个GPU并提供巨大内存范围内可控的GC时间和垃圾收集器,专有硬件优化的线程调度等优秀特点
  • BEA LiquidVm 特定硬件平台绑定、软硬件配合专有虚拟机
  • LiquidVM 自己本身实现了一个专有操作系统的必要功能、例如线程调度、文件系统、网络支持等
  • Apache Harmony
  • Microsoft JVM
  • Taobao JVM 基于OpenJDK订制版的阿里jvm
  • Dalvik Vm 谷歌开发用于安卓的,只能称为虚拟机,没有遵从java虚拟机规范。寄存器架构
  • GRaal VM 跨语言全栈虚拟机,未来取代Hotspot可能性最大。

二、JVM运行的流程

1、整体流程架构,按Hotsopt

在这里插入图片描述

2、类装载子系统内容和流程

  • 内容
    在这里插入图片描述
  • 流程
    在这里插入图片描述

3、虚拟机加载器区别

在这里插入图片描述

获取ClassLoader的四种方式

  • 当前类 clazz.getClassLoader()
  • 当前线程 Thread.currentThread().getContextClassLoader()
  • 获取系统 ClassLoader.getSystemClassLoader()
  • 获取调用者 DirverManger.getCallerClassLoader();

双亲委派机制

  • Java类加载机制,用于防止核心类被篡改导致的问题
    在这里插入图片描述

4、运行时数据区

  • 本地方法区
  • 程序计数器
  • java虚拟机栈
  • 堆区
  • 元数据区
  • JIT CodeCache 编译产物

4.1 本地方法区

4.2 程序计数器

4.3 java虚拟机栈

4.4 堆区

4.5 元数据区

4.6 JIT CodeCache 编译产物

三、JVM的常见问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值