JVM调优实战 - 解决CMS concurrent-abortable-preclean LongGC告警问题
JVM调优实战 - 解决CMS concurrent-abortable-preclean LongGC告警问题 问题背景 多个业务线的应用出现LongGC告警 最近一段时间,经常收到CAT报出来的Long GC告警(配置为大于3秒的为Longgc)。 JVM知识回顾 JVM堆内存划分 新生代(Young Generation) 新生代内被划分为三个区:Ed

2022年10月12日
大约 8 分钟
JVM调优实战 - JVM诊断工具与问题定位排查总结
JVM调优实战 - JVM诊断工具与问题定位排查总结 1. JVM背景 总结排查JVM问题时可以使用的工具、策略、措施等。 2. JVM配置 2.1. oom时自动dump heap -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=存放dump的目录 2.2. 持续性的JFR JFR Java flight

2022年7月21日
大约 8 分钟
JVM面试系列-01
JVM面试系列-01 1. 什么是 JVM? Java程序的跨平台特性主要是指字节码文件可以在任何具有Java虚拟机的计算机或者电子设备上运行,Java虚拟机中的Java解释器负责将字节码文件解释成为特定的机器码进行运行。 因此在运行时,Java源程序需要通过编译器编译成为.class文件。 众所周知java.exe是java class文件的执行程序,但实

2022年7月17日
大约 17 分钟
JVM面试系列-02
JVM面试系列-02 1. GC是什么?为什么要有GC? GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法。 Java开发人员

2022年7月17日
大约 18 分钟
JVM面试系列-03
JVM面试系列-03 1. Java 中 JVM 什么时候会触发 FullGC? 除直接调用System.gc外,触发Full GC执行的情况有如下四种。 1、旧生代空间不足 旧生代空间只有在新生代对象转入及创建为大对象、大数组时才会出现不足的现象,当执行Full GC后空间仍然不足,则抛出如下错误: 为避免以上两种状况引起的FullGC,调优时应尽量做到让

2022年7月17日
大约 22 分钟
JVM面试系列-04
JVM面试系列-04 1. 你知道哪些垃圾回收算法? GC最基础的算法有三种:标记-清除算法、复制算法、标记-压缩算法,我们常用的垃圾回收器一般都采用分代收集算法。 标记-清除算法,“标记-清除”(Mark-Sweep)算法,如它的名字一样,算法分为“标记”和“清除”两个阶段:首先标记出所有需要回收的对象,在标记完成后统一回收掉所有被标记的对象。 复制算法,

2022年7月17日
大约 15 分钟
JVM面试系列-05
JVM面试系列-05 1. Java 虚拟机规范中,对Java 虚拟机栈规定几种异常情况? • 如果线程请求的栈深度大于虚拟机所允许的深度,将抛出StackOverflowError异常。 • 如果虚拟机在动态扩展栈时无法申请到足够的内存空间,则抛出OutOfMemoryError异常。 这两种情况存在着一些互相重叠的地方:当栈空间无法继续分配时,到底是内存

2022年7月17日
大约 7 分钟