
JVM
Miracle42
这个作者很懒,什么都没留下…
展开
-
JVM学习笔记(七):即时编译器、提前编译器、编译器优化技术、方法内联、逃逸分析
后端编译与优化如何把字节码看作是程序的中间表达形式,那么编译器无论何时、在何种状态下把Class文件转换为本地基础设施(硬件指令集、操作系统)相关的二进制机器码,它都可以视为整个编译过程的后端后端编译主要包括即时编译(Just In Time)和提前编译(Ahead Of Time),下面分别来介绍一下这两种形式即时编译器目前主流的两款商用Java虚拟机(HotSpot、OpenJ9)里,Java程序最初都是通过解释器(Interpreter)进行执行的,当虚拟机发现某个方法或者代码块的运行特别频繁原创 2020-05-24 17:35:38 · 1906 阅读 · 0 评论 -
JVM学习笔记(六):Javac编译器、语法糖、泛型
前端编译与优化编译器概述Java中的编译器主要分为三种:前端编译器:把*.java文件转变为*.class文件的过程。代表有JDK的Javac即时编译器:(常称为JIT编译器,Just In Time Compiler)运行期把字节码转变为本地机器的过程。代表有HotSpot虚拟机的C1,C2编译器提前编译器:(常称为AOT编译器,Ahead Of Time Compiler)直接把程序编译成目标机器指令相关的二进制代码的过程Java中即时编译器在运行期的优化过程,支撑了程序执行效率的不断提原创 2020-05-22 16:14:39 · 811 阅读 · 0 评论 -
JVM学习笔记(五):运行时栈帧结构、方法调用、基于栈的字节码解释执行引擎
虚拟机字节码执行引擎概述执行引擎是Java虚拟机核心的组成部分之一。物理机的执行引擎是直接建立在处理器、缓存、指令集和操作系统层面上的,而虚拟机的执行引擎是由软件自行实现的,因此可以不受物理条件制约,定制指令集与执行引擎的结构体系,能够执行那些不被硬件直接支持的指令集格式Java虚拟机通常会有解释执行(通过解释器执行)和编译执行(通过即时编译器产生本地代码执行)两种选择,也可能两者兼备。但是从外观上,所有的Java虚拟机的执行引擎输入和输出都是一致的:输入的是字节码二进制流,处理过程是字节码解析执行的原创 2020-05-21 11:41:21 · 946 阅读 · 0 评论 -
JVM学习笔记(四):类加载过程、类加载器、双亲委派
虚拟机类加载机制简介Java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这个过程就被称为虚拟机的类加载机制。特点:与编译时进行连接的语言不同,Java语言的类型加载、连接和初始化过程都在程序运行期间完成。这样做的会让类加载时稍微增加一些性能开销,但好处是提供了极高的扩展性和灵活性。例如提供了接口与实现的动态绑定(动态多态)。类加载的时机一个类型从被加载到虚拟机内存中开始,到卸载出内存为止,他的整个生命周期包括:加载原创 2020-05-18 14:54:14 · 849 阅读 · 0 评论 -
JVM学习笔记(三):类文件结构、字节码指令简介
类文件结构Java虚拟机规范简介平台无关性(一次编写,到处运行):运行在各种不同硬件平台和操作系统上的Java虚拟机都在可以载入和执行同一种平台无关的字节码,从而实现程序的“一次编写,到处运行”。任何一个Class文件都对应着唯一的一个类或者接口的定义信息(但是反过来说,类或者接口并不一定都定义在文件中(譬如类和接口也可以动态生成,直接送入类加载器))。Class文件是一组以8个字节为基础单位的二进制流,各个项目按照严格的顺序紧凑地排列在文件,中间没有任何分隔符。Class文件由两种数据结构组成原创 2020-05-16 12:37:46 · 914 阅读 · 0 评论 -
JVM学习笔记(二):垃圾回收、垃圾回收算法、垃圾回收器(Serial、Parallel、CMC、G1)、内存分配原则实战
垃圾回收一、判断对象是否可以被回收1、引用计数计数法内容:在对象中添加一个引用计数器,每当有一个地方引用它,计数器就加一;当引用失效时,计数器就减一;任何时刻计数器为零的对象都是不可能在被使用的缺点:无法解决对象之间的循环引用问题。如下图所示对象A和对象B,他们之间相互引用,除此之外再无任何引用,则他们的引用计数器值都为1,但实际上这两个对象都不可能在被访问了,而且无法被回收。2、可达性分析算法内容:通过一系列称为“GC Roots”的根对象作为起始节点集,从这些节点开始根据引用关系向下搜索,原创 2020-05-13 17:53:49 · 1715 阅读 · 0 评论 -
JVM学习笔记(一):引言、JVM内存结构
引言Java Virtual Machine:java程序的运行时(java二进制字节码的运行环境)优点一次编写,到处运行自动内存管理,垃圾回收功能数组下标越界检查多态jvm, jre, jdk之间的区别:JVM整体结构:JVM 内存结构JVM 内存结构主要包括:程序计数器(PC Register)虚拟机栈(JVM Stacks)本地方法栈(Native Met...原创 2020-05-01 11:34:04 · 1058 阅读 · 0 评论