![](https://img-blog.csdnimg.cn/2019092715111047.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
JVM
【JVM】系列博客是对《深入理解Java虚拟机》(第3版)以及宋红康老师讲的JVM这两块内容的综合理解+总结。
清酒欧尼酱
看山是山,看山不是山,看山还是山
展开
-
Java的前端编译器
笔记写在了草稿里,还没整理出来,敬请期待哦……原创 2022-07-30 22:50:38 · 305 阅读 · 2 评论 -
欧尼酱讲JVM(23)——垃圾收集器
前面几篇文章我们讲了垃圾收集相关的算法,现在我们开始讲垃圾收集器。有了虚拟机就一定需要手机垃圾的机制,这就是GarbageCollection,对应的产品我们称为GarbageCollector。垃圾收集器发展史1999年,随JDK 1.3.1 一起来的是串行方式的Serial GC,它是第一款GC。ParNew GC是Serial GC的多线程版本。 2002年2月26日,Parallel GC和Concurrent Mark Sweep GC( 即CMS) 跟随 JD...原创 2020-12-12 17:31:11 · 447 阅读 · 1 评论 -
欧尼酱讲JVM(22)——分代收集算法
前面我们介绍了垃圾收集相关算法,那么就没有一种最好的算法吗?答案是没有。没有最好只有最合适,具体情况要具体分析。那么今天我们就来介绍下分代收集算法。原创 2020-12-01 15:02:14 · 151 阅读 · 0 评论 -
欧尼酱讲JVM(21)——垃圾回收相关算法
垃圾回收有很多算法,但是没有最好的,只有最合适的。就像你的另一半,没有完美的,之后最合适你的。通过这篇文章你可以了解到不同的垃圾回收算法。原创 2020-11-30 14:57:54 · 194 阅读 · 1 评论 -
欧尼酱讲JVM(20)——了解垃圾回收
本篇文章中,我会简单介绍:什么是GC,为什么需要GC,了解早期垃圾回收行为,应该关心哪些区域的回收。小伙伴们赶快点进来了解一下吧!原创 2020-09-11 13:58:21 · 208 阅读 · 0 评论 -
欧尼酱讲JVM(19)——执行引擎
本篇文章详细介绍了,什么是执行引擎,执行引擎包括哪些部分,以及各部分的详解,小伙伴们,赶快点进来看吧!原创 2020-09-08 21:34:41 · 341 阅读 · 7 评论 -
欧尼酱讲JVM(18)——对象实例化内存布局与访问定位
对象实例化后在内存中是怎样的呢?它们是怎么拆分的呢?又是怎么存储的呢?对象实例又是怎样被访问到呢?原创 2020-09-06 11:44:06 · 851 阅读 · 7 评论 -
欧尼酱讲JVM(17)——方法区详解有图有真相
方法区里有什么呢?方法区是怎样工作的呢?要想知道,请看这篇博客!有图有真相!原创 2020-09-04 18:57:25 · 1237 阅读 · 7 评论 -
欧尼酱讲JVM(16)——如何基于逃逸分析进行代码优化
如何让我们的代码跑去来更加流畅呢?看本仙女通过实战+原理来为你讲解!点它点它点它!原创 2020-09-03 11:55:01 · 1167 阅读 · 8 评论 -
欧尼酱讲JVM(01)——整体概览(导航)
jvm是什么jvm有什么作用(优点)jvm整体结构jvm声明周期原创 2020-07-26 21:32:00 · 484 阅读 · 0 评论 -
欧尼酱讲JVM(15)——堆空间的参数设置
堆空间的参数设置,可以复制粘贴直接拿去用哦~原创 2020-09-02 08:42:09 · 304 阅读 · 0 评论 -
欧尼酱讲JVM(14)——堆
我以我身上20斤肉发誓,这绝对是全网最全,最详细的有关【堆】的介绍,包含代码举例与JVisualVM演示对象分配过程,有动图,绝对通俗易懂。什么?不信?不信我就瘦20斤给你看!!原创 2020-08-31 14:38:54 · 839 阅读 · 2 评论 -
欧尼酱讲JVM(13)——本地方法栈
有图有真像,本地方法栈,让你看得见原创 2020-08-31 13:59:36 · 374 阅读 · 0 评论 -
欧尼酱讲JVM(12)——本地方法接口
位置图解图中虚线框起来的就是本地方法接口什么是本地方法简单地讲,一个NativeMethod就是一个Java调用非Java代码的接口,一个NativeMethod是这样一个Java方法:该方法的实现由非Java语言实现,比如C,这个特征并非Java所有,很多其他的编程语言都有这样一个机制,比如在C++中,你可以用extern "C"告知C++编译器去调用一个C函数。在定义一个native method时,并不提供实现体(有些像定义了一个Java interface),因为其实现...原创 2020-08-30 21:31:29 · 369 阅读 · 0 评论 -
欧尼酱讲JVM(11)——动态链接和常量池
因为动态链接和运行时常量池有联系,所以先解释一下运行时常量池:运行时常量池位于方法区(注意:JDK1.7 及之后版本的 JVM 已经将运行时常量池从方法区中移了出来,在 Java 堆(Heap)中开辟了一块区域存放运行时常量池)为什么需要运行时常量池常量池的作用,就是为了提供一些符号和常量,便于指令的识别。下面提供一张测试类的运行时字节码文件格式每一个栈帧内部都包含一个指向运行时常量池Constant pool或该栈帧所属方法的引用。包含这个引用的目的就是为了支持当前方法的代码能够实现.原创 2020-08-26 14:26:31 · 616 阅读 · 0 评论 -
欧尼酱讲JVM(10)——操作数栈
首先要明确一个概念:操作数栈在栈帧中。我红色框圈起来的部分。操作数栈的理解每一个独立的栈针中除了包含局部变量表以外,还包含一个后进先出的操作数栈,也叫表达式栈。操作数栈在方法执行过程中,根据字节码指令,往栈中写入数据或提取数据,即入栈。某些字节码指令将值压入操作数栈,其余字节码指令将操作数取出栈,使用他们后再把结果压入栈。 比如:执行复制,交换,求和等操作。操作数栈的特点操作数栈,主要用于保存计算过程的中间结果,同时作为计算过程中变量临时的存储空间。 操作数栈就是jvm执行引.原创 2020-08-26 09:47:17 · 416 阅读 · 0 评论 -
欧尼酱讲JVM(09)——虚拟机栈-变量槽slot
这篇文章接着【JVM】运行时数据区-虚拟机栈 来写,虚拟机栈中提到了局部变量表,那么局部变量表又是存储什么内容呢?关于Slot的理解参数值的存放总是在局部变量数组的index0开始,到数组长度-1索引结束。 局部变量表,最基本的存储单元是Slot(变量槽) 局部变量表中存放编译期可知的各种基本数据类型(8种),引用类型(reference),returnAddress类型的变量 局部变量表里,32位以内的类型只占用一个solt(包括returnAddress类型),64位的类型(long和d.原创 2020-08-26 08:51:11 · 378 阅读 · 0 评论 -
欧尼酱讲JVM(08)——字节码中方法内部结构的剖析
用到的工具——JclasslibIDEA提供了插件,很方便。首先先看一段代码:public class LocalVariablesTest { private int count = 0; public static void main(String[] args) { LocalVariablesTest test = new LocalVariablesTest(); int num = 10; test.test1().原创 2020-08-26 08:18:03 · 238 阅读 · 0 评论 -
欧尼酱讲JVM(07)——方法的栖身之所—虚拟机栈
本篇博客详细介绍了虚拟机栈的相关知识,包括虚拟机栈概念,内容,工作原理,生命周期等。大家快来围观吧!原创 2020-08-24 15:43:48 · 308 阅读 · 2 评论 -
欧尼酱讲JVM(06)——指点江山—程序计数器
本篇博客详细介绍了程序计数器的概念,执行过程,结合实例更容易理解!快来围观吧!原创 2020-08-24 11:51:20 · 315 阅读 · 0 评论 -
欧尼酱讲JVM(05)——守护线程和普通线程
有待补充原创 2020-08-24 11:28:58 · 216 阅读 · 2 评论 -
欧尼酱讲JVM(04)——运行时数据区简介
对面的男孩女孩过来看呀过来看,JVM系列博客将持续更新原创 2020-08-16 23:24:16 · 264 阅读 · 0 评论 -
欧尼酱讲JVM(03)——用户自定义类加载器
用户自定义类加载器在Java的日常应用程序开发中,类的加载几乎是由“引导类加载器,扩展类加载器,系统类加载器”这三种类加载器相互配合执行的,在必要时,我们还可以自定义类加载器,来定制加载方式。为什么要自定义类加载器呢?隔离加载类:某些类路径一样,类名也相同,需要做类的仲裁,就需要自定义加载器,来隔离加载类。 修改类的加载方式 扩展加载源 防止源码泄露用户自定义类加载器实现步骤开发人员可以通过继承抽象类java.lang.ClassLoader类的方式,实现自己的类的加载器,满足一些特原创 2020-08-10 14:07:09 · 293 阅读 · 0 评论 -
欧尼酱讲JVM(02)——类的加载过程
加载我们知道,在代码编译后,就会生成JVM(Java虚拟机)能够识别的二进制字节流文件(*.class)。而JVM把Class文件中的类描述数据从文件加载到内存,并对数据进行校验、转换解析、初始化,使这些数据最终成为可以被JVM直接使用的Java类型,这个说来简单但实际复杂的过程叫做JVM的类加载机制。这个过程就类似于,计算机把高级语言转化为机器语言,这个道路。类的加载器分类在加载阶段,需要用到类的加载器。引导类加载器 扩展类加载器 系统类加载器链接验证(Verify).原创 2020-08-09 22:03:40 · 402 阅读 · 4 评论