![](https://img-blog.csdnimg.cn/49818db8604740e8b0c4caf3c69ce899.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Jvm
文章平均质量分 93
jvm的相关知识点,提升java基础、掌握深入体系。
dev晴天
接下来需要花一段时间把博客重新整理下,重新巩固下知识点,,,,加油!!!
展开
-
【深入理解JVM】晚期编译优化
要点Jit编译器Hotspot虚拟机内的即使编译器解释器与编译器编译对象与触发条件编译过程编译优化技术公共子表达式消除数组边界检查方法内联逃逸分析一、 Jit编译器在商用的虚拟机Sun HotSpot中,Java程序最初是通过解释器(Interpreter)进行解释执行的,当虚拟机发现某个方法或者代码块的运行特别频繁时,就会把这些代码认定为热点代码。为了提高热点代码的执行效率,在运行时,虚拟机将把这些代码编译成与本地平台相关的机器码,并进行各种层次的优化,完成这个任务的编译原创 2021-06-24 22:22:45 · 303 阅读 · 1 评论 -
【深入理解JVM】早期编译优化
一、简介1、Java 语言的 ”编译器“ 其实是一段 ”不确定“ 的操作过程:因为它可能是指一个前端编译器(javac)把 java 文件转变成 class 文件的过程;也可能是指虚拟机的后端运行期编译器(JIT)把字节码(class文件)转变成机器码的过程;还可能是指使用静态提前编译器(AOT 编译器)直接把 java 文件编译成本地机器代码的过程。2、下面列举了这三类编译过程中一些比较有代表的编译器:前端编译器:JavacJIT 编译器:HotSpot VM 的 C1、C2 编译器原创 2021-06-23 21:52:41 · 516 阅读 · 0 评论 -
【深入理解JVM】JVM 类加载机制
一、类加载流程1、类加载机制jvm把描述类的数据的class文件加载到内存中,并对数据进行校验、解析、初始化、最终形成可被jvm使用的java类型,这就是jvm的类加载机制。ps:在 Java 语言里面,类型的加载、链接和初始化都是程序运行期间完成的,这种策略虽然会令类加载时稍微增加一些性能开销,但是会为 Java 应用程序提供高度的灵活性。比如我们可以自定义类加载器。2、类加载流程类从被加载在到虚拟机的运行内存开始,到被卸载出内存结束完整的生命周期如下:加载->链接->初始化-&g原创 2021-06-21 22:36:29 · 238 阅读 · 0 评论 -
【深入理解JVM】JVM垃圾收集器与内存分配策略
HotSpot 的算法实现垃圾收集器内存分配和回收策略原创 2021-06-21 21:26:06 · 95 阅读 · 0 评论 -
【深入理解JVM】垃圾搜集算法与垃圾回收算法
垃圾搜索算法jvm 在进行对象回收之前首先要进行搜索的,垃圾对象被搜索出后在合适的时候进行回收。因此垃圾的搜索对应的也有相应的算法1、引用计数算法概念:给每个对象添加一个计数器,当有引用指向这个对象时计数器加一,当指向该对象的引用失效时计数器减一,当计数器的数值为零时代表对象没有被使用。好处:垃圾对象实时回收:程序运行时根据对象的引用计数器数值就可判断对象是否为垃圾。计数器的数值更新只与当前对象有关,不必扫描全部对象。垃圾回收无需挂起(无需为后台进程)。垃圾回收时内存不足可直接报OOM,原创 2020-11-03 21:06:19 · 226 阅读 · 0 评论 -
【深入理解JVM-Java的四种引用&finalize】
为啥要引进四种引用?jdk1.2之前的引用这样定义的:如果reference类型的数据中存储的数值代表另一块内存的起始地址,就称这块内存代表着一个引用。这样的话一个对象只能表示两种状态,即被引用,未被引用。如果我们希望描述这样一类对象:当内存空间足够时则保留在内存中,如果内存空间在进行垃圾收集后还是比较紧张则可以抛弃这些对象。于是jdk1.2之后扩展了引用。引用分类1、强引用(StrongReference)强引用就是指在程序代码中普遍存在的,类似Object o = new Object(原创 2020-10-10 11:39:39 · 124 阅读 · 0 评论 -
【深入理解JVM-OutOfMemoryError实战】
除了程序计数器外jvm的其他运行时数据区域都有可能出现OOM本节就简单的实战下,以及总结下idea下踩得坑。前言1、本节目的通过代码验证jvm各个运行时数据区域存储的内容实际工作中遇到OOM时,能根据异常信息快速判断哪个区域的OOM,知道什么样的代码可能导致这些区域的OOM,以及出现OOM后如何处理。2、idea上设置jvm参数采坑不要把idea的jvm启动参数当成设置jvm...原创 2019-10-05 19:46:46 · 629 阅读 · 0 评论 -
【深入理解JVM-HotSpot虚拟机对象探秘】
HotSpot虚拟机对象探秘1、对象的创建在语言层次上创建对象(例如克隆,反序列化),通常也就是“new”简单。使用了new关键字就创建出来了。但是在jvm中,对象(本文讨论的对象限于普通对象,不包括数组和class对象等)的创建是怎样的过程呢?(1)类加载1、虚拟机碰到new指令时会检查指令的参数能否定位到常量池中类的符号引用2、检测这个符号引用代表的类是否已经被加载、解析、初始化过。如果没有则进行相应的流程。(2)内存分配(对象初始化)指针碰撞法(堆完整时采用)空闲列表法(堆不原创 2020-11-03 21:08:17 · 145 阅读 · 0 评论 -
【深入理解JVM-Java内存区域】
众所周知C,C++的内存管理是由开发人员控制的(什么malloc,free之类的),但是在java中这个权利交给了jvm(java虚拟机)由虚拟机的自动内存管理机制管理。这样为java程序员带来了好处,即不需要手动的为每一个new操作去delete/free了,所以相对来说不容易出现内存溢出问题,但是一旦出现内存溢出,如果对虚拟机怎样使用内存不了解,那么排查错误会很困难的。知识点一、运行...原创 2019-10-03 18:51:47 · 460 阅读 · 0 评论 -
【深入理解JVM-走进Java】
出来工作了几个月后,发现对java高阶知识了解的还是不够深,没毕业就买了一本<深入理解java虚拟机>到现在也就粗略看了也就两三章。于是决定通过做笔记的方式再次学习下。梳理下知识体系,了解下深入知识。一、java技术体系1、官方定义Sun官方定义的java技术体系包括:1、java 语言2、各个硬件平台的java虚拟机3、Class文件的格式4、Java API类库...原创 2019-10-02 20:22:20 · 275 阅读 · 0 评论