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
相关推荐
Derek_Smart9 天前
从一次 OOM 事故说起:打造生产级的 JVM 健康检查组件
java·jvm·spring boot
大道至简Edward9 天前
深入 JVM 核心:一文读懂 Class 文件结构(附 Hex 实战解析)
jvm
weisian15112 天前
JVM--20-面试题6:如何判断对象可以被垃圾回收?
jvm·可达性算法
西岸行者12 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
蚊子码农13 天前
每日一题--JVM线程分析与死锁排查
jvm
悠哉悠哉愿意13 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
别催小唐敲代码13 天前
嵌入式学习路线
学习
xuxie9913 天前
NEXT 1 进程2
java·开发语言·jvm
毛小茛13 天前
计算机系统概论——校验码
学习
babe小鑫13 天前
大专经济信息管理专业学习数据分析的必要性
学习·数据挖掘·数据分析