摘要: Cglib 动态代理,会动态创建类 如果使用不当会导致生成大量的类元数据 塞满metaspace 试验代码 依赖包 <dependency> <groupId>cglib</groupId> <artifactId>cglib</artifactId> <version>3.3.0</version 阅读全文
posted @ 2021-03-18 01:46 mushishi 阅读(652) 评论(0) 推荐(0) 编辑
摘要: 1. MetaSpace 加载太多类 metaspace 塞不下的时候会导致 full gc,连带回收老年代空间 但是类的元数据要被回收掉的条件比较苛刻的 对应的类加载器要先被回收了 类的所有实例对象要被回收 所以回收效果比较差,塞不下了 导致内存溢出 1.1元数据区出现oom的原因可能有 没有设置 阅读全文
posted @ 2021-03-18 01:39 mushishi 阅读(238) 评论(0) 推荐(0) 编辑
摘要: 机器的配置,内存多少G jvm 参数设置: 堆大小,年轻代、老年代比例 等 收集器用的是什么 ⇒ 知道什么内存水位和时机会发生 minor gc 和 full gc 观察 gc 概况: minor gc 的频率和耗时, full gc的频率和耗时 重点关注 stw 和 fullgc 再细看 gc 情 阅读全文
posted @ 2021-03-18 01:37 mushishi 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 为什么又是必要的 如果在一个初创公司(其实现在在哈啰也是这样的, 都是直接用发布系统提供的jvm参数模板), 系统压力没那么大,大多数开发对 jvm 的调优并没有那么多经验, 这时候 新起一个服务 jvm怎么配置呢?copy 一下已有项目的jvm参数设置? 让架构师或资深工程师凭经验来设置? 大多数 阅读全文
posted @ 2021-03-18 01:36 mushishi 阅读(117) 评论(0) 推荐(1) 编辑
摘要: 一、上线前预估 预估日活用户数量 高峰时段、时长 用户一次行为涉及到的接口,预估接口请求次数 根据上面3个指标 算出接口预计的 qps, 适当扩大 10 ~ 20倍 接口耗时 接口执行过程中创建的对象总大小, 适当扩大 10~20倍 前面算出的 qps * 创建对象总大小 ⇒ 每秒内存占用 再根据接 阅读全文
posted @ 2021-03-18 01:32 mushishi 阅读(86) 评论(0) 推荐(0) 编辑
摘要: 监控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 阅读全文
posted @ 2021-03-18 01:29 mushishi 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 把 java 堆内存拆分成多个大小相同的 Region, 逻辑上区分年轻代和老年代; G1的内存分配的过程和策略还是 垃圾回收的整个过程一样的,但是它的内存比例是动态的 特点:可以设置垃圾回收的预期停顿时间 -XX:MaxGCPauseMills 新生代gc如何优化? G1 的年轻代是动态的, -X 阅读全文
posted @ 2021-03-18 01:26 mushishi 阅读(429) 评论(0) 推荐(0) 编辑
摘要: 老年代优化的基调 :避免对象过快进入老年代 进而思考 ⇒ 什么情况对象会进入老年代? ⇒ 什么情况对象会提前进入老年代? 参考 什么时候会触发老年代gc 和 minor gc前后的几种特殊情况 每次minor gc后,根据执行耗时 、qps、每次执行产生对象大小 来计算出 存活对象的总大小, 注意 阅读全文
posted @ 2021-03-18 01:24 mushishi 阅读(77) 评论(0) 推荐(0) 编辑
摘要: 分析这几点 • qps多少? • 每秒占用多少内存? • 多长时间触发一次Minor GC? 60秒 • 一般Minor GC后有多少存活对象? 120M左右 • Survivor能放的下吗? survivor 500M • 会不会频繁因为Survivor放不下导致对象进入老年代? 不会 • 会不会 阅读全文
posted @ 2021-03-18 01:17 mushishi 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 频繁full gc会导致 1. 机器 cpu 负载过高 2. 频繁 full gc 告警 3. 系统无法请求处理或者过慢, 接口无关 全面性的 出现以上异常的时候,要第一时间反应过来可能是 full gc的问题 频繁full gc的常见原因 full gc 触发条件是 老年代空间不足, 所以追因的方 阅读全文
posted @ 2021-03-18 01:15 mushishi 阅读(7117) 评论(0) 推荐(2) 编辑