zoukankan      html  css  js  c++  java
  • GC干货

    1、young gc

     

    2、对象进入老年代时机

      

    3、old gc

     

     晋升担保机制

    4、gc优化

    a、如何设置jvm参数
    估算: 系统qps 创建对象个数 请求对象总大小 每秒使用内存空间
    目标:尽可能让每次youngc后存活的对象远远小于survivor区域 避免对象频繁进入老年代触发fullgc
    理想状态: 系统几乎不发生fullgc。 老年代的对象比较稳定,长期使用的对象 躲过了15次younggc后晋升的对象

    系统压测模拟线上并发的压力
    用jstat观察gc日志

    b、fullgc的表现
    cpu负载高
    系统无法处理请求或处理过慢

    c、fullgc常见原因
    系统并发过高或处理数据量大,导致youngc频繁,而且每次younggc过后存活对象太多,内存分配不合理,survivor区域过小,导致对象频繁进入到老年代,频繁触发full gc

    系统一次性加载过多的数据到内存中,有很多大对象,导致频繁进入老年代,频繁触发fullgc

    发生了内存泄露,大量对象无法回收,一直在老年代里,频繁触发fullgc

    metaspace因为加载类过来触发fullgc

    调用了System.gc()

    整理一份参数模板使用

    5、 内存溢出

    metaspace:

    a 使用默认参数 依赖了很多的外部jar 导致太小不够用
    b 使用了cglib会动态生成很多类 没有控制好数量

    栈:
    递归的方法调用

    堆:

    高并发请求 

    内存泄漏



  • 相关阅读:
    tidb的数据校验工具sync-diff-inspector
    tidb的binlog同步工具TiDB Binlog
    tidb的数据同步ticdc
    tidb的数据备份与恢复工具br
    tiup的数据同步工具dm
    反人类设计是如何炼成的?
    tidb的tidb组件的配置文件详解
    tidb的tikv配置详解
    tidb的pd配置详解
    tidb的tiup工具
  • 原文地址:https://www.cnblogs.com/huilei/p/12558847.html
Copyright © 2011-2022 走看看