jvm调优_内存泄漏诊断

1️⃣ 使用Spring Boot模拟场景:

  • 注入List持续添加数据(内存泄漏源)
    2️⃣ Arthas实时分析:
  • heapdump生成 → MAT导入 → 定位Dominator Tree
    3️⃣ 修复验证:
  • 优化弱引用缓存 → GC后观察对象回收

实例代码

通过api接口不断访问增加元空间的内存

启动 arthas 查看内存

或使用visualVM查看内存 每次访问接口都会造成元空间内存增加

heapdump fixed_dump.hprof 触发内存快照

分析fixed_dump.hprof

修复
将强引用集合替换为弱引用结构,允许 JVM 在需要时回收对象
import java.util.*;
import java.lang.ref.WeakReference;

public class FixedCacheController {

private static Map<WeakReference<byte[]>, Boolean> cache = 
    Collections.synchronizedMap(new WeakHashMap<>());

@GetMapping("/cache")
public String cacheData() {
    byte[] data = new byte[1024 * 1024];
    cache.put(new WeakReference<>(data), Boolean.TRUE);
    return "Data cached (weak). Size: " + cache.size();
}

}

posted @   lllrrrqqq  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示