当前位置: 首页 > news >正文

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 :属性信息

无参构造方法执行
在这里插入图片描述

aload_0

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、虚拟机栈

 int i = 8;
 i = i++
 sout(i)  // 8

在这里插入图片描述

相关文章:

  • JPA应用@Formula注解
  • Windows 11 卸载 Edge
  • intellij idea篇
  • 工厂设计模式
  • PySide (PyQt)的视图(QGraphicsView)和场景(QGraphicsScene)
  • 【鸿蒙Next】优秀鸿蒙博客集锦
  • 简单了解低代码Low Code
  • repo学习使用
  • HTTP/2 由来及特性
  • 探寻氧化铈:催化剂领域的璀璨明珠-京煌科技
  • 第39周:猫狗识别 2(Tensorflow实战第九周)
  • 上课啦 | 2月17日软考高项【5月备考班】
  • DeepSeek神经网络:技术架构与实现原理探析
  • VSCode选择编译工具(CMake)
  • HarmonyOS 5.0应用开发——Canvas制作个人签名
  • Linux开源生态与开发工具链的探索之旅
  • 通过openresty和lua实现随机壁纸
  • 基于SSM的农产品供销小程序+LW示例参考
  • 布隆过滤器详解及使用:解决缓存穿透问题
  • GDB 使用心得
  • 湖南企业网站制作公司/线上推广
  • 企业网络推广网站建设/怎么建设自己的网站
  • 推广一次多少钱/徐州seo外包
  • 广东涂料网站建设/杭州seo的优化
  • 青海网站建设推广/2023疫情最新消息今天
  • 网站运营技巧/咸阳网站建设公司