摘要:
监控jvm进程状态 jstat jstat -gc pid {间隔时间} {次数} 监控gc情况 S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT 1024.0 1024.0 0.0 0.0 8192.0 4436.4 阅读全文
摘要:
把 java 堆内存拆分成多个大小相同的 Region, 逻辑上区分年轻代和老年代; G1的内存分配的过程和策略还是 垃圾回收的整个过程一样的,但是它的内存比例是动态的 特点:可以设置垃圾回收的预期停顿时间 -XX:MaxGCPauseMills 新生代gc如何优化? G1 的年轻代是动态的, -X 阅读全文
摘要:
老年代优化的基调 :避免对象过快进入老年代 进而思考 ⇒ 什么情况对象会进入老年代? ⇒ 什么情况对象会提前进入老年代? 参考 什么时候会触发老年代gc 和 minor gc前后的几种特殊情况 每次minor gc后,根据执行耗时 、qps、每次执行产生对象大小 来计算出 存活对象的总大小, 注意 阅读全文
摘要:
分析这几点 • qps多少? • 每秒占用多少内存? • 多长时间触发一次Minor GC? 60秒 • 一般Minor GC后有多少存活对象? 120M左右 • Survivor能放的下吗? survivor 500M • 会不会频繁因为Survivor放不下导致对象进入老年代? 不会 • 会不会 阅读全文
摘要:
频繁full gc会导致 1. 机器 cpu 负载过高 2. 频繁 full gc 告警 3. 系统无法请求处理或者过慢, 接口无关 全面性的 出现以上异常的时候,要第一时间反应过来可能是 full gc的问题 频繁full gc的常见原因 full gc 触发条件是 老年代空间不足, 所以追因的方 阅读全文