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、运行过程中,内存泄漏

      

     修改前

    修改后

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

  • 相关阅读:
    【第四周】四则运算图形化
    【第四周】【小组项目】【第二次】新蜂小组站会
    【第四周】【小组项目】【第一次】新蜂小组站会
    【第三周】站会和燃尽图
    【第三周】每周psp
    【第三周】四人小组项目
    【第三周】【】cppunit!
    【第二周】【作业一】读构建之法
    【第二周】【作业二】每周例行报告
    词频统计效能测试---------第二版
  • 原文地址:https://www.cnblogs.com/Jomini/p/13672842.html
Copyright © 2011-2022 走看看