-XX:InitialRAMPercentage 和 -XX:MaxRAMPercentage 是 Java 虚拟机(JVM)的两个参数,用于基于系统可用物理内存的百分比来动态设置堆内存的初始大小和最大大小。 参数解释 -XX:InitialRAMPercentage:此参数用来设定 JVM 堆内存的初始大小,以系统可 […]
-XX:InitialRAMPercentage 和 -XX:MaxRAMPercentage 是 Java 虚拟机(JVM)的两个参数,用于基于系统可用物理内存的百分比来动态设置堆内存的初始大小和最大大小。 参数解释 -XX:InitialRAMPercentage:此参数用来设定 JVM 堆内存的初始大小,以系统可 […]
在 Java 里,触发垃圾回收(GC)的方式多种多样: 代码层面触发 1. 调用 System.gc() 或 Runtime.getRuntime().gc() 在 Java 代码中,可以调用 System.gc() 或者 Runtime.getRuntime().gc() 方法来建议 JVM 进行垃圾回收。不过要注意 […]
今天排查线上问题的时候,执行jmap -heap 1遇见一个报错: Error: -heap option used Cannot connect to core dump or remote debug server. Use jhsdb jmap instead 这是因为在较新的 JDK 版本中,jmap 工具的一 […]
大厂(转转、携程、京东)都用分代ZGC,卡顿降低20倍,吞吐量提升4倍 案例1: 携程的要全面升级jdk21 的消息: 网上有小道一个消息说携程要全面升级jdk8到jdk21了,jdk8其实是2014年正式发布的,正式发布已经有10年的时间了。 这次升级应该跟spring boot也有关,大家都知道从spring bo […]
问题背景 问题是,咱们常常说:发生OOM,程序就会挂。 很多情况是:发生OOM了,JVM没有挂。 回顾一下OOM与异常 来看一下 OutOfMemoryError,说到底,OutOfMemoryError 也只是一个java中的异常而已, OutOfMemoryError 属于Error一系非检查异常, 其继承关系如下 […]
发现问题 线上服务重启,好在抓到了线上服务的dump文件,下载到本地进行分析。 使用MAT打开快照文件,此处省略掉使用MAT的过程,分析发现有大量的com.netflix.servo.monitor.BasicTimer未释放,且被org.springframework.cloud.netflix.metrics.se […]
背景 本文仅是为了帮助入门新人了解什么是内存屏障、内存屏障都做了什么等基础问题,并无深入说明。 内存屏障的实现涉及大量硬件架构层面的知识,又需要操作系统或JVM的配合才能发挥威力,单纯从任何一个层面都无法理解。 如有疏漏,还望指正! 什么是内存屏障 内存屏障(Memory Barrier)是一个CPU指令。是硬件之上、 […]
三色标记法是一种垃圾回收法,它可以让JVM不发生或仅短时间发生STW(Stop The World),从而达到清除JVM内存垃圾的目的。JVM中的CMS、G1垃圾回收器所使用垃圾回收算法即为三色标记法。 三色标记算法思想 三色标记法将对象的颜色分为了黑、灰、白,三种颜色。 白色:该对象没有被标记过。(对象垃圾) 灰色: […]
《深入理解java虚拟机》中说到GC Roots的节点主要在全局的引用(例如常量或类静态属性)与执行上下文(例如栈帧中的本地变量表)中,但是进行根节点枚举的时候我们并不需要一个不漏地检查完所有执行上下文和全局引用位置,HotSpot中通过使用一组称为OopMap的数据结构,用于直接存放对象引用,类加载完成,HotSpo […]
JMX监控权限认证配置 JMX(Java Management Extensions,即Java管理扩展)是一个为应用程序、设备、系统等植入管理功能的框架。JMX可以跨越一系列异构操作系统平台、系统体系结构和网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应用。 1、非认证登录 -Dcom.sun.managem […]
上邪!我欲与君相知,长命无绝衰。
山无陵,江水为竭,冬雷震震,夏雨雪,天地合,乃敢与君绝。