JVM学习

JVM

1、JVM是一个跨语言的平台,与语言无关

2、java虚拟机规范:一流企业做标准,二流企业做品牌,三流企业做产品

JVM种类

Hotspot:Oracle 公司,有商业版和免费版

open jdk 内部包含免费版本hotspot虚拟机

Jrockit: BEA公司,曾经号称世界最快的虚拟机,后被Oracle收购,合并到Hotspot虚拟机

J9:IBM公司

Microsoft VM:微软

TaobaoVM:阿里,Hotspot深度定制版

LiquidVM:直接针对硬件,效率极高

azul zing:商业版本,速度快,垃圾回收1ms以内

垃圾回收算法被Hotspot吸收,衍生现在的ZGC

等等

3、JDK、JRE和JVM三者关系

JDK: 包括JRE和java 开发工具包

JRE: java运行是环境,包括JVM和java的核心类库

JVM: java虚拟机,运行字节码文件的平台

Class 文件

magic number:4个字节

minor version :2个字节

major version :2个字节

constant_pool_count :2个字节,常量池数量,最多存储常量数量2^16个

constant_pool :常量池,长度为constant_pool_count-1的的表

access_flags :访问标记

this_class :类名引用

super_class :父类引用

interface_count :接口数量

interfaces :接口列表

fileds_count :属性数量

fileds :属性列表

methods_count :方法数量

method_info :方法信息

attribute_count :属性数量

attribute_info :属性信息

无参构造方法执行

Class文件解释器Jclasslib

Class 的加载过程包括: Loading,Linking(Verification,Perparation,Resolution),initializing

1、加载过程是通过类加载器完成的;jre内置类加载器包括Bootstarp,Ext和Application:Bootstarp 加载 jre/lib/rt.jar包中的class文件,Ext加载 jre/lib/ext路径下jar包中的class文件,Application加载classpath下的class文件;除了内置类加载器之外,用户还可以自定义类加载;遵循双亲委派原则

2、为什么要遵循双亲委派原则

2.1主要保证类加载的安全性,防止核心类被篡改

2.2同时可以提高加载效率,父加载器已经加载,则不需要再进行加载

加载不到类,抛出异常ClassNotFoundException

JMM Java内存模型

数据一致性

老的:总线锁

新的:缓存锁 + MESI

缓存行

缓存对齐:disruptor

乱序问题

CPU硬件内存屏障

Java内存屏障

运行时数据区

1、虚拟机栈

java 复制代码
 int i = 8;
 i = i++
 sout(i)  // 8
相关推荐
通信小呆呆4 天前
当算法有了“五感”:多模态数据融合如何向人体感官协同学习?
人工智能·学习·算法·机器学习·机器人
H__Rick4 天前
自动对焦学习-3
人工智能·学习·计算机视觉
Daisy Lee4 天前
量化学习-第1章-什么是量化金融
学习·金融·datawhale
源分享4 天前
Java线程同步的多种实现方法(非常详细)
java·开发语言·jvm
Alsn864 天前
等待学习-学习目录:Docker 容器安全攻防
学习·安全·docker
YM52e4 天前
买菜计算器小应用 - HarmonyOS ArkUI 开发实战-PC版本
学习·华为·harmonyos·鸿蒙·鸿蒙系统
小雨下雨的雨4 天前
HarmonyOS ArkUI训练营入门-组件掌握系列-Animation 动画效果实现-PC版本
学习·华为·harmonyos·鸿蒙
JAVA9654 天前
JAVA面试-JVM篇 03-JVM运行时数据区哪些是线程私有的哪些是共享的
java·jvm·面试
cqbzcsq4 天前
CellFlow虚拟细胞论文阅读
论文阅读·人工智能·笔记·学习·生物信息
YangYang9YangYan4 天前
2026初入职场学习数据分析的价值
学习·数据挖掘·数据分析