• 【性能调优】OOM问题


    OOM发生的一般原因:

    1. 资源不够
      可能是内存分配过小,而正常业务却使用了大量的内存
    2. 申请的资源太多
      某一个对象被频繁的申请,却没有被释放,内存不断泄露,最终导致内存耗尽
    3. 资源耗尽
      某一个资源被频繁的申请,系统在资源耗尽,例如不断的创建线程,不断的发起网络连接

    定位方法:
    步骤一:确认内存本身分配是不是过小

    jmap -heap 进程id
    

    在这里插入图片描述
    步骤二:找到最耗费内存的对象

    jmap -histo:live 进程id | more
    

    在这里插入图片描述
    步骤三:确认资源是否耗尽
    pstree和netstat来查看进程创建的线程数,以及网络连接数等资源是否被耗尽

    内存分析简单有效的方法是通过内存的dump命令,导出内存栈,但是这个命令会进行full GC一次,导出的文件可以通过MAT VisualVM查看
    如下图显示

    showllow heap表示的是对象本身的大小,retained heap表示的是本身的大小加引用的大小
    另外如果要定位代码正在做什么事情

  • 相关阅读:
    sql基础笔记备忘
    论坛---挂掉的思考
    http response
    跑步肋骨下方疼
    Golang
    svn rollback: 恢复到上一版本
    中国时区
    crontab
    初识redis
    siege
  • 原文地址:https://www.cnblogs.com/guanhuohuo/p/12533553.html
Copyright © 2020-2023  润新知