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
相关推荐
心中有国也有家10 小时前
AtomGit Flutter 鸿蒙客户端: ChangeNotifier 模式
学习·flutter·华为·harmonyos
取地址符10 小时前
C++学习笔记(基于learn-cxx)(1)
c++·经验分享·笔记·学习
恣逍信点12 小时前
主观是客观的聚焦
人工智能·学习·程序人生·生活·业界资讯·交友·哲学
打球她不香吗12 小时前
本周ALLegro学习内容的总结
学习·allegro
其实防守也摸鱼13 小时前
蓝队相关知识学习(1)---常用堡垒机和服务器
服务器·功能测试·学习·网络安全·网络攻击模型·攻防对抗·蓝队
冰可乐配13 小时前
fmpeg音频编码组件aac(Advanced Audio Coding (AAC) encoder)学习
学习·音视频·aac
憧憬成为java架构高手的小白14 小时前
MySQl学习
学习
三品吉他手会点灯14 小时前
嵌入式机器学习 - 学习笔记1.1.1 - 什么是机器学习?
c语言·人工智能·笔记·嵌入式硬件·学习·机器学习
程序猿小泓15 小时前
从 Claude Code 学 Agent Harness:一个前端工程师的 AI Agent 学习笔记
前端·人工智能·学习
minglie115 小时前
Axi4Full转SMMR突发读写和单次读写对比
学习