zoukankan      html  css  js  c++  java
  • JVM 故障调优

    JVM --- OOM 线上环境处理

     

    定位

      没有日志可以定位

      接受所有系统, jvm启动参数

            转为一个文件,JVM 内存快照

      1 -XX:+HeapDumpOnOutOfMemoryError -xx:HeapDumpPath = /temp/202009.hpro

     

       GcRoot是垃圾回收器算法中判断一个对象是否可以回收的一种算法

      就是对象到达GcRoot的路径是否还有可达,即是否有可引用链,如果有,这表明对象还存在着引用,
    如果没有,则表明该对象没有引用,在下一次垃圾回收时就会被回收

        GcRoot的种类

      1.虚拟机栈:栈帧中的本地变量表引用的对象

      2.native方法引用的对象

      3.方法区中的静态变量和常量引用的对象

     

     

    基于JVM理解,利用MAT 工具

    1、内存是否不通用 --> 压力测试,了解 jvm 原理

      结合业务场景 ---->  每个请求返回多少数据

    2、可能是业务流程有问题(代码有问题)

    可能 ---》 对象太多 ---》 GC 手段  ---》 垃圾回收 ---》 释放

    OOM ---》 GC 无法释放更多内存

    1、可以对象定位  

      一个类、多个地方使用 --》 登录/查询用户列表/导出用户数据

    2、可疑代码段定位

      没有GC  有地方再用 ---》什么地方使用

           对象在哪里来 ---》 代码中的动态创建

      Java ----执行的最小单位 ----》 线程

      求解  哪段代码导致 OOM 

      2.1 、找到可疑线程

    main ---主线程

    Thread-0

       2.2、线程当时运行的情况

    线程执行stack信息

     3、分析代码逻辑,排除问题

    OOM  

      1、启动时候出现

      2、运行过程中,内存泄漏

      

     修改前

    修改后

     在同一个线程中,创建对象没有被回收

  • 相关阅读:
    MinGW
    zip ubuntu使用
    7zip ubuntu使用
    ffmpeg入门
    音频采样
    购房需知
    linux网络配置相关
    挂载与卸载
    spring boot启动异常:java.sql.SQLException: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver
    获取配置文件yml的@ConfigurationProperties和@Value的区别
  • 原文地址:https://www.cnblogs.com/Jomini/p/13672842.html
Copyright © 2011-2022 走看看