![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
文章平均质量分 74
程序员内卷指南
这个作者很懒,什么都没留下…
展开
-
如何排查线上内存飙高问题
标题常用的监控和诊断内存工具工欲善其事,必先利其器。平时排查内存性能瓶颈时,我们往往需要用到一些 Linux 命令行或者 JDK 工具来辅助我们监测系统或者虚拟机内存的使用情况,下面我就来介绍几种好用且常用的工具。Linux 命令行工具之 top 命令top 命令是我们在 Linux 下最常用的命令之一,它可以实时显示正在执行进程的 CPU 使用率、内存使用率以及系统负载等信息。其中上半部分显示的是系统的统计信息,下半部分显示的是进程的使用率统计信息。除了简单的 top 之外,我们还可以通过 to原创 2022-05-19 11:59:40 · 1294 阅读 · 0 评论 -
深入理解JVM之四:程序计数器(PC寄存器)
PC寄存器JVM 的程序计寄存器中。Register的命名源自CPU的寄存器,寄存器存储指令相关的现场信息,CPU只有把数据装载到寄存器才能够运行。这里,并非是广义上所指的物理寄存器,或许将其翻译为PC计数器(或指令计数器)会更加则贴(也称为程序钩子),并且也不容易引起一些不必要的误会。JVM中的PC寄存器是对物理PC 存器的一种抽象模拟。PC寄存器用来存储指令向下一条指令的地址,也即将要执行的执行代码,由执行引擎读取下一条指令。它是一块很小的内存空间,几平可以忽略不记。也是运行速度最快的有储区域原创 2022-05-19 11:21:12 · 190 阅读 · 0 评论 -
深入理解JVM之三:运行时数据区内部结构
内存是十分重要的系统资源,是硬盘和CPU的中间仓库及桥梁,承载着操作系统和应用程序的实时运行,JVM内存布局规定了java在运行过程中内存申请,分配,管理的策略,保证了JVM的高效稳定运行,不同的JVM对于内存的划分方式和管理机制存在着部分差异。结合JVM虚拟机规范,来探讨下经典的JVM内存布局。JVM定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁。另外一些则是与线程一一对应的,这些与线程对应的数据区域会随着线程的开始和结束而创建和销毁。线程私有原创 2022-05-17 16:30:46 · 122 阅读 · 0 评论 -
深入理解JVM之二:类加载器以及双亲委派机制
类加载器JVM支持两种类型的类加载器,分别为引导类加载器(BootStrap ClassLoader)和自定义类加载器(User-Defined ClassLoader)从概念上讲,自定义加载器一般指的是程序中由开发人员自定义的一类类加载器。但是Java 虚拟机规范却没有这么定义,而是将所有派生于抽象类ClassLoader的类加载器都划分为自定义类加载器。 //获取系统类加载器 ClassLoader systemClassLoader = ClassLoader.g原创 2022-05-06 16:12:29 · 116 阅读 · 0 评论 -
深入理解JVM之一:JVM内存结构以及加载过程
概述首先先看一个简要图:其中loadClass的类加载过程有如下几步:加载 >> 验证 >> 准备 >> 解析 >> 初始化 >> 使用 >> 卸载加载:在硬盘上查找并通过IO读入字节码文件,使用到类时才会加载,例如调用类的main()方法,new对象等等,在加载阶段会在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的访问入口验证:校验字节码文件的正确性准备:给类的静态变量分配原创 2022-05-06 10:29:56 · 147 阅读 · 0 评论 -
JVM垃圾收集底层算法实现之三色标记
在并发标记的过程中,因为标记期间应用线程还在继续跑,对象间的引用可能发生变化,多标和漏标的情况就有可能发生。这里我们引入“三色标记”来给大家解释下,把Gcroots可达性分析遍历对象过程中遇到的对象, 按照“是否访问过”这个条件标记成以下三种颜色:黑色: 表示对象已经被垃圾收集器访问过, 且这个对象的所有引用都已经扫描过。 黑色的对象代表已经扫描过, 它是安全存活的, 如果有其他对象引用指向了黑色对象, 无须重新扫描一遍。 黑色对象不可能直接(不经过灰色对象) 指向某个白色对象。灰色: 表示...原创 2020-06-28 17:22:16 · 1652 阅读 · 0 评论 -
JVM类加载机制深度剖析
1、类加载过程多个java文件经过编译打包生成可运行jar包,最终由java命令运行某个主类的main函数启动程序,这里首先需要通过类加载器把主类加载到JVM。主类在运行过程中如果使用到其它类,会逐步加载这些类。注意,jar包里的类不是一次性全部加载的,是使用到时才加载。类加载到使用整个过程有如下几步:加载 >> 验证 >> 准备 >> 解析 >...原创 2020-05-01 22:19:52 · 138 阅读 · 0 评论