![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
文章平均质量分 95
Sadness°
熟悉Java语言;熟悉SQL及索引原理;熟悉SSM、SpringBoot、SpringCloud框架、JVM、并发编程及高并发处理。
展开
-
Java各大垃圾回收器详细介绍
目录概述评估 GC 的性能指标吞吐量与暂停时间吞吐量暂停时间两者对比垃圾回收器的种类垃圾回收器的组合关系Serial 回收器:串行回收ParNew回收器:并行回收Parallel Scavenge回收器:高吞吐量 概述 垃圾收集器没有在规范中进行过多的规定,可以由不同的厂商、不同版本的 JVM 来实现 由于 JDK 的版本处于高速迭代的过程,因此 Java 发展至今已经衍生了众多的 GC 版本 从不同角度分析垃圾收集器,可以将 GC 分为不同的类型 评估 GC 的性能指标 吞吐量:运行用户代码的时间占原创 2021-02-08 01:59:57 · 636 阅读 · 0 评论 -
JVM - 垃圾回收相关算法
目录总览垃圾标记阶段:对象存活判断引用计数算法可达性分析算法(根搜索算法、追踪性垃圾收集)对象的 finalization 机制MAT 与 JProfiler 查看 GC Roots垃圾清除阶段标记-清除算法复制算法标记-压缩算法(标记-整理算法)3 种清除算法小结分代收集算法增量收集算法分区算法(不同于分代) 总览 垃圾收集分为标记阶段和清除阶段 标记阶段:引用计数算法、可达性分析算法 清除阶段:标记清除算法、复制算法、标记压缩算法、分代收集算法、增量收集算法、分区算法 垃圾标记阶段:对象存活判断原创 2021-02-03 23:37:15 · 114 阅读 · 0 评论 -
JVM - 垃圾收集概述
目录引入什么是垃圾为什么要 GC早期垃圾回收GC 的作用区域相关概念System.gc()内存泄露与内存溢出Stop The World垃圾回收的并发与并行 引入 什么是垃圾 垃圾是指在运行程序中没有任何指针指向的对象,这个对象就是需要被回收的垃圾 如果不及时对内存中的垃圾进行清理,那么这些垃圾对象所占的内存空间会一直保留到应用程序结束,被保留的空间无法被其他对象使用,甚至可能导致内存溢出 垃圾收集,不是 Java 语言的伴生产物,早在 1960 年,第一门开始使用内存动态分配和垃圾收集技术的 Lisp原创 2021-02-03 21:15:37 · 125 阅读 · 0 评论 -
JVM - 方法区
目录1 概述2 HotSpot中方法区的演进3 设置方法区大小4 解决元空间的OOM5 内部结构6 运行时常量池 1 概述 《Java虚拟机规范》中说明:尽管所有的方法区在逻辑上是属于堆的一部分,但一些简单的实现可能不会选择去进行垃圾收集或进行压缩。但对于HotSpot JVM而言,方法区还有一个别名叫做Non-Heap非堆,目的就是要和堆分开。所以,方法区看做是一块独立于Java堆的内存空间 方法区与堆一样,是各个线程共享的内存区域 方法区在JVM启动的时候被创建,并且它的实际物理内存空间中和Java堆原创 2021-01-18 20:52:29 · 136 阅读 · 0 评论 -
JVM - 堆内存
目录1 概述2 内存细分3 设置堆空间大小4 新生代与老年代5 对象分配过程6 MinorGC、MajorGC、FullGC7 TLAB8 堆空间中常用参数9 逃逸分析10 总结 1 概述 一个java程序启动,那么就会启动一个进程,一个进程对应一个JVM实例,一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心区域 Java堆区在JVM启动的时候即被创建,其空间大小也就确定了(但可以调节),是JVM管理的最大一块内存空间 《Java虚拟机规范》规定,堆可以处于物理上不连续的内存空间中,但在逻辑上原创 2021-01-17 16:37:40 · 230 阅读 · 0 评论 -
JVM - 执行引擎
目录1 概述2 执行引擎的工作流程3 解释器与 JIT 编译器4 Java代码的执行分类5 为什么还要存在解释器6 编译器7 总结8 写在最后 1 概述 我们先看两张图,第一张是基本结构,第二张是流程及作用 翻译如下: Interpreter:解释器 JIT Compiler:即时编译器 Intermediate code generator:中间代码生成器 Code optimization:代码优化 Target code generator:目标代码生成器 执行引擎是Java虚原创 2021-01-17 15:18:14 · 73 阅读 · 0 评论 -
JVM - 虚拟机栈
1 概述 虚拟机栈保存着一个个的栈帧,一个栈帧代表一个java方法 注意:栈无GC垃圾回收,但有OOM内存溢出问题 2 栈的特点 栈是一种快速有效的分配存储方式,访问速度仅次于程序计数器 3 栈的作用 主管Java程序的运行,它保存方法的局部变量、部分结果,并参与方法的调用和返回 4 栈中可能出现的异常 ①如果使用固定大小的Java虚拟机栈,如果线程请求分配的栈容量超过Java虚拟机栈允许的最大容量,则会报StackOverflowError异常 ②如果使用的是可动态扩展的Java虚拟机栈,并原创 2021-01-16 20:43:14 · 146 阅读 · 0 评论 -
JVM - 类加载器子系统
写在前面:此笔记是依照尚硅谷课程做的,图片均是截图,如有侵权,请告知 类加载器子系统 1、类加载器子系统简图 类加载子系统负责从文件系统或者网络中加载class文件,class文件在文件开头有特定的文件标识 ClassLoader只负责class文件的加载,至于他是否可以运行,则由Execution Engine执行引擎决定 加载的类信息存放于一块称为方法区的内存空间。除了类的信息外,方法区中还会存放运行时常量池信息,可能还包括字符串字面量和数字常量(这部分常量信息是class文件中常量池部分原创 2020-12-25 20:04:36 · 83 阅读 · 0 评论 -
JVM - PC寄存器及本地方法接口
写在前面:此笔记是依照尚硅谷课程做的,图片均是截图,如有侵权,请告知 PC寄存器及本地方法接口 1、运行时数据区: 一个JVM对应一个进程,一个进程可以有多个线程,这些线程共享方法区和堆,每个线程独有一份PC寄存器、虚拟机栈、本地方法栈 2、PC寄存器(程序计数器) PC寄存器存储指令相关的信息,CPU只有把数据装载到寄存器才能够运行 作用:PC寄存器用来存储指向下一条指令的地址,也即将要执行的指令代码,由执行引擎读取下一条指令。 它是一块很小的内存空间,几乎可以忽略不计,也是运行速度最快的原创 2020-12-25 19:48:46 · 109 阅读 · 0 评论 -
JVM - JVM概述
写在前面:此笔记是依照尚硅谷课程做的,图片均是截图,如有侵权,请告知 JVM概述 1、Java在C++语言的基础上增加了垃圾收集机制,它为我们打理了很多繁琐的工作,大大提高了开发的效率,但是,垃圾收集也不是万能的,懂得JVM内部的内存结构,工作机制,是设计高扩展性应用和诊断运行时问题的基础,也是Java工程师进阶的必备能力 2、JVM只识别字节码class文件,它并不关心,class文件是由何种语言生成的。也就是说JVM有语言无关性,不会单纯地与Java语言“终生绑定”,只要其他编程语言的编译结果满足并包含原创 2020-12-25 19:35:09 · 113 阅读 · 0 评论