马士兵JVM
根可达算法
三色标记算法
堆的参数配置
-XX:+PrintGC 每次触发GC的时候打印相关日志
-XX:+UseSerialGC 串行回收
-XX:+PrintGCDetails 更详细的GC日志
-Xms 堆初始值
-Xmx 堆最大可用值
-Xmn 新生代堆最大可用值
-XX:SurvivorRatio 用来设置新生代中eden空间和from/to空间的比例.
含以-XX:SurvivorRatio=eden/from=den/to
总结:在实际工作中,我们可以直接将初始的堆大小与最大堆大小相等,
这样的好处是可以减少程序运行时垃圾回收次数,从而提高效率。
-XX:SurvivorRatio 用来设置新生代中eden空间和from/to空间的比例.
-XX:NewRatio=2设置新生与老年代代参数
年轻代和年老代将根据默认的比例(1:2)分配堆内存,可以通过调整二者之间的比率NewRadio来调整二者之间的大小,也可以针对回收代,比如年轻代,通过 -XX:newSize -XX:MaxNewSize来设置其绝对大小。同样,为了防止年轻代的堆收缩,我们通常会把-XX:newSize -XX:MaxNewSize设置为同样大小
定位OOM
查看进行中java进程
jps
进程详细信息 -xxx进程号
jinfo -xxx
进程栈信息 -xxx进程号
jstack -xxx
前20行进程使用类的内存情况
jmap -histo -xxx | head -20
查看内存情况
jstat -gc -XXX
导出堆离线分析
jmap -dump:format=b,file=20201108.hprof 2017
b二进制 20201108任意文件名开头 2017进程号
分析工具
MAT Jprofiler jvisualvm
线上工具
Arthas
dashboard 仪表盘
thread 查询所有线程
thread -b 查询死锁线程
jad 包名.类名 线上反编译,查看动态代理类或其他类信息
redefine /root/TT.class 重定义类实现热部署
大文件dump情况
日志分析+活的线程jmap分析
分布式全链路压测
trace 类命 方法名
trace ABC a
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!