A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 小刘同学90 中级黑马   /  2019-1-20 10:42  /  933 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1)Java heap space/GC overhead limit exceeded
    dump分析:启动参数-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=  或者jmap -dump:format=b,file=文件名 [pid]
    使用mat工具分析heapdump
    占用内存较大代码优化
    如果内存占用不多:可能是创建了一个大对象导致,根据日志分析创建大对象的时间/jstack分析是否存在死循环
2)PermGen space
    调大PermSize
    是否动态加载Groovy脚本
    是否有动态生成类逻辑,比如使用cglib大量动态生成类
3)Direct buffer memory
    默认占用-Xmx相同的内存 //-XX:MaxDirectMemorySize=1G调整
    网络通信使用Netty但是未限流
    分析代码中是否使用DirectyBuffer未合理控制
4)java.lang.StackOverflowError
    调小-Xss使每个线程栈的内存占用减小 //设置每个线程的堆栈大小
    调小-Xmx,给栈更多的内存空间
    分析代码中是否存在不合理的递归
5)request bytes for Out of swap space
    地址空间不够 //64bitos
    物理内存不够:jmap -histo:live pid ,如果内存明显减少,说明是directbuffer问题,通过-XX:MaxDirectMemorySize设定
    btrace Inflater/Deflater
6)unable to create new native thread
    ulimit -a //vim /etc/security/limits.conf添加
    * soft noproc 11000
    * hard noproc 11000
    * soft nofile 5000  //修改限制
    * hard nofile 5000  //修改限制
/proc/sys/kernel/pid_max 操作系统线程数限制
/proc/sys/vm/max_map_count 单进程mmap的限制会影响
/proc/sys/kernel/thread-max
/proc/sys/vm/max_map_count
max_user_process(ulimit -u)

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马