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会动态生成很多类 没有控制好数量

    栈:
    递归的方法调用

    堆:

    高并发请求 

    内存泄漏



  • 相关阅读:
    纯CSS实现自动轮播,CSS变量的定义与使用,计算属性的使用
    input:file样式怎样修改
    Div转为Canvas简直不要太好玩~~~
    oracle nvl2函数
    oracle 子查询
    oracle 分组函数执行分析
    oracle外部表
    oracle USING 用法
    面向对象进阶
    面向对象基础
  • 原文地址:https://www.cnblogs.com/huilei/p/12558847.html
Copyright © 2011-2022 走看看