![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
文章平均质量分 96
竹子爱熊猫
这个作者很懒,什么都没留下…
展开
-
单体项目偶遇并发漏洞!短短一夜时间竟让老板蒸发197.83元!
眼下这位正襟危坐的男子,即将成为被告人,由于CV大法用上头了,给系统遗留了并发漏洞,幸亏平台用户量不大,否则老板亏损百万起步……原创 2023-05-29 16:04:05 · 286 阅读 · 1 评论 -
(八)JVM成神路之GC分区篇:G1、ZGC、ShenandoahGC高性能收集器深入剖析
引言 在《GC分代篇》中,我们曾对JVM中的分代GC收集器进行了全面阐述,而在本章中重点则是对JDK后续新版本中研发推出的高性能收集器进行深入剖析,但在开始前,先来看看JDK的发布记录中关于GC体系的改变:2018年9月:JDK11发布,引入Epsilon垃圾回收器,又被称为"No-0p(无操作) "回收器。同时,引入了可伸缩的低延迟垃圾回收器ZGC(Experimental)。2019年3月:JDK12发布,增强G1收集器,实现自动返还未用堆内存给操作系统。同时,引入了低停原创 2022-03-20 00:45:00 · 2196 阅读 · 1 评论 -
(七)JVM成神路之GC分代篇:分代GC器、CMS收集器及YoungGC、FullGC日志剖析
引言在《GC基础篇》中曾谈到过分代以及分区回收的概念,但基础篇更多的是建立在GC的一些算法理论上进行高谈阔论,而本篇则重点会对于分代收集器的实现进行全面详解,其中会涵盖串行收集器、并行收集器、三色标记、SATB算法、GC执行过程、并发标记、CMS收集器等知识,本篇则偏重于分析GC机制的落地实现,也就是垃圾收集器(Garbage Collector)。一、堆空间回顾与GC收集器概述GC覆盖的范围有堆空间与元空间,而主要的作用范围则是堆空间,所以先简单回顾堆空间后,再对于GC中的一些概念进行阐述,有了这些原创 2022-03-19 15:30:00 · 1496 阅读 · 0 评论 -
(六)JVM成神路之GC基础篇:对象存活判定算法、GC算法、STW、GC种类详解
引言经过前面五个章节的分析后,对于JVM的大部分子系统都已阐述完毕,在本文中则开始对JVM的GC子系统进行全面阐述,GC机制也是JVM的重中之重,调优、监控、面试都逃不开的JVM话题。在前面分析JVM运行时内存区域时,其中程序计数器、虚拟机栈、本地方法栈三个区域随线程而生,伴线程而亡。而运行期间,栈的每个栈帧所需空间大小,其实在编译期就可大致确定,因此这几个区域的内存分配和回收都具备确定性,在这些区域内不需要过多考虑回收的问题,因为所分配的区域会随着线程或方法栈帧的销毁而随之回收。而Java堆空间和元原创 2022-03-18 00:45:00 · 1470 阅读 · 0 评论 -
(五)JVM成神路之对象内存布局、分配过程、从生至死历程、强弱软虚引用全面剖析
引言在上篇文章中曾详细谈到了JVM的内存区域,其中也曾提及了:Java程序运行过程中,绝大部分创建的对象都会被分配在堆空间内。而本篇文章则会站在对象实例的角度,阐述一个Java对象从生到死的历程、Java对象在内存中的布局以及对象引用类型。一、Java对象在内存中的布局Java源代码中,使用new关键字创建出的对象实例,我们都知道在运行时会被分配到内存上存储,但分配的时候是直接在内存中“挖”一个对应大小的坑,然后把对象实例丢进去存储吗?其实并不然,Java对象一般在内存中的布局通常由对象头、实例数据、原创 2022-03-17 11:15:00 · 311 阅读 · 0 评论 -
(四)JVM成神路之深入理解虚拟机运行时数据区与内存溢出、内存泄露剖析
引言前面的文章中重点是对于JVM的子系统进行分析,在之前已经详细的阐述了虚拟机的类加载子系统以及执行引擎子系统,而本篇则准备对于JVM运行时的内存区域以及JVM运行时的内存溢出与内存泄露问题进行全面剖析。一、全面详解JVM运行时内存区域JVM在运行Java程序时,会把自身管理的内存分为若干个不同的数据区域,这些区域各自都有各自的用途,同时,不同的区域也有着不同的生命周期,有些区域随着虚拟机的启动而开辟,随着虚拟机的终止而销毁,有的区域则是在运行过程中不断的创建与销毁。JVM内存区域也被称为JVM运行原创 2022-03-16 19:45:00 · 561 阅读 · 0 评论 -
(三)JVM成神路之全面详解执行引擎子系统与JIT即时编译原理
引言执行引擎子系统是JVM的重要组成部分之一,在JVM系列的开篇曾提到:JVM是一个架构在平台上的平台,虚拟机是一个相似于“物理机”的概念,与物理机一样,都具备代码执行的能力。但虚拟机与物理机最大的不同在于:物理机的执行引擎是直接建立在处理器、高速缓存、平台指令集与操作系统层面上的,物理机的执行引擎可以直接调用各处资源对代码进行直接执行,而虚拟机则是建立在软件层面上的平台,它的执行引擎则是负责解释编译执行自身定义的指令集代码。同时,也正因Java设计出了JVM虚拟机的结构,从而才使得Java可以不受物理平原创 2022-03-16 01:00:00 · 469 阅读 · 0 评论 -
(二)JVM成神路之剖析Java类加载子系统、双亲委派机制及线程上下文类加载器
引言上篇《初识Java虚拟机》文章中曾提及到:我们所编写的Java代码经过编译之后,会生成对应的class字节码文件,而在程序启动时会通过类加载子系统将这些字节码文件先装载进内存,然后再交由执行引擎执行。本文中则会对Java虚拟机的类加载机制以及执行引擎进行全面分析。一、初窥类加载机制及加载过程详解每个编写出的.java文件都存储着需执行的程序逻辑,经过Java编译器编译后,会为每个.java文件生成对应的.class字节码文件,.class文件中则记录着Java代码转换之后的虚拟机指令,每个.cla原创 2022-03-15 00:30:00 · 384 阅读 · 10 评论 -
(一)JVM成神路之初识虚拟机 - 探寻Java虚拟机的前世今生之秘
引言JVM(Java Virtual Machine)Java虚拟机的概念大家都不陌生,Java之所以可以做到“一次编译,到处运行”的跨平台性,其根本原因就在于JVM。JVM是建立在操作系统(OS)之上的,Java虚拟机屏蔽了开发人员与操作系统的直接接触,我们在通过Java编写程序时,只需要负责编写Java代码即可,关于具体的执行则会由JVM加载字节码后翻译成机械指令交给OS执行。同时JVM方面的知识,在如今Java内卷日益加重的时代中,也变成了每位Java开发人员必须要掌握的一项技能,求职面试过程中原创 2022-03-14 14:21:21 · 2073 阅读 · 0 评论