![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
文章平均质量分 94
安静的次元
这个作者很懒,什么都没留下…
展开
-
(总结)深入理解Java虚拟机之自动管理内存
深入了解Java虚拟机1、Java内存区域与内存溢出异常1-1、运行时数据区1、Java内存区域与内存溢出异常1-1、运行时数据区 1、程序计数器原创 2021-05-08 13:25:06 · 220 阅读 · 0 评论 -
深入理解Java虚拟机之虚拟机执行子系统 (1)
深入理解Java虚拟机之虚拟机执行子系统1、类文件结构1-1、 Class类文件的结构1-1-1、魔数与Class文件的 版本1-1-2、常量池1、类文件结构1-1、 Class类文件的结构class文件是一组以字节为基础的二进制流,各个数据项严格按照顺序紧凑子排列在文件之中,中间没有添加任何分隔符。Class文件格式采用一个类似C语言结构体的伪结构来存储数据,伪结构只有两种数据类型:无符号数和表。无符号数属于基本的数据类型,u1、u2、u4、u8、代表一个字节,二个字节,8个字节的的无符号数原创 2021-07-07 22:57:48 · 95 阅读 · 0 评论 -
深入理解Java虚拟机之虚拟机执行子系统 (2)
虚拟机类加载机制1、概述2、类加载的时机3、类加载的过程1、加载2、验证3、准备4、解析5、初始化1、概述虚拟机的类加载机制: 虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化、最终形成可以直接被虚拟机直接使用的java类型,这个过程被称作虚拟机的类加载机制。2、类加载的时机一个类型从加载到虚拟机内存开始,到卸载出内存为止,他的整个生命周期经历加载、验证、准备、解析、初始化、使用、卸载七个阶段。验证、准备、解析三个部分统称为连接。加载、验证准备、初始化和卸原创 2021-07-09 22:43:41 · 103 阅读 · 0 评论 -
【笔记】深入理解Java虚拟机之虚拟机执行子系统 (3)
虚拟机字节码执行引擎1、运行时栈帧结构1-1、局部变量表1-2、操作数栈1-3、动态连接1-4、方法返回地址2、方法调用2-1、解析2-2、分派3、动态类型语言支持3-1、java.lang.invoke3-2、invokedynamic4、基于栈的字节码解释执行引擎4-1、解释执行4-2、基于栈的指令集与基于寄存器的指令集4-3、基于栈的解释器执行过程所有的Java虚拟机的执行引擎输入、输出都是一致的:输入的是字节码二进制流,处理过程是字节码解析执行的等效过程,输出的是执行结果。1、运行时栈帧结构原创 2021-07-11 21:27:27 · 83 阅读 · 0 评论 -
【笔记】深入理解Java虚拟机之程序编译与代码优化(4)
【笔记】前端编译与优化1、前端编译与优化1-1、概述1-2、Javac编译器1、解析与填充符号表1、词法、语法分析2、填充符号表2、注解处理器3、语义分析与字节码生成1、标注检查2、数据及控制流分析3、解语法糖4、字节码生成1-3、Java语法糖1、泛型2、自动装箱、拆箱及遍历循环3、条件编译1、前端编译与优化1-1、概述编译器是一个很含糊的表达,要放到具体的上下文环境中去讨论;前端编译器:把*.java文件转变成*.class的过程;即时编译器(JIT):运行期把字节码转变成本地机器码的过程原创 2021-07-22 19:50:17 · 87 阅读 · 0 评论 -
【笔记】深入理解Java虚拟机之程序编译与代码优化(5)
后端编译与优化后端编译与优化1、概述2、即时编译器(JIT)1、解释器与编译器2、编译对象与触发条件3、编译过程3、提前编译器(AOT)4、编译器优化技术后端编译与优化1、概述字节码看作程序语言的一种中间表示形式,那么编译器无论在何时,何种状态下把Class文件转化成与本地基础设施相关的二进制机器码,都可以视为整个编译器的后端。提前编译器或即时编译器都不是Java虚拟机必需组成部分。后端编译器性能的好坏,代码优化质量的高低确实衡量一款商用虚拟机优秀与否的关键指标之一;2、即时编译器(JIT)原创 2021-07-13 22:37:26 · 99 阅读 · 0 评论 -
高效并发之Java内存模型与线程(1)
高效并发之Java内存模型与线程Java内存模型主内存与工作内存内存间交互操作对于volatile型变量的特殊规则针对long和double型变量的特殊规则原子性、可见性、有序性先行发生原则Java与线程线程的实现Java内存模型现代计算机系统加入一层或多层读写速度尽可能接近处理器运算速度的高速缓存来作为内存与处理器之间的缓冲;Java内存模型主要目的是定义程序中各种变量的访问规则,即关注在虚拟机中把变量存储到内存和从内存中取出变量值这样的底层细节;(这里的变量指的是实例字段,静态字段和构成数组对象原创 2021-07-20 21:56:37 · 61 阅读 · 0 评论 -
高效并发之线程安全与锁优化(2)
线程安全与锁优化线程安全Java中的线程安全不可变绝对线程安全相对线程安全线程兼容线程对立线程安全的实现方法当多个线程同时访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用放方运行热呢其他的协调操作,调用这个对象的行为都可以获得正确的结果没那就称这个对象是线程安全的;线程安全Java中的线程安全Java语言中各种操作共享的数据分为以下五类:不可变、绝对线程安全、相对线程安全、线程兼容和线程对立;不可变不可变的对象一定是线程安全的,无论原创 2021-07-22 22:33:41 · 70 阅读 · 0 评论