java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > jvm oom排查

jvm oom排查记录剖析

作者:outwar

这篇文章主要为大家介绍了jvm oom排查记录剖析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

命令

命令作用
jmap -dump:live,format=b,file=java.hprof {pid}dump内存
jhat -refs true dump.hprof分析
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp/heapdump.hprofoomdump
jstat -gc {pid}内存和gc
jmap -histo:live {pid}摘要

jProfile

使用jProfile对大对象进行分析, 查看其引用链路

static class Cache {
    private final ClientFinalizer clientFinalizer = new ClientFinalizer();
    // 就是这个map
    private final Map<Key, FileSystem> map = new HashMap<Key, FileSystem>();
    private final Set<Key> toAutoClose = new HashSet<Key>();
}

最大的对象是FileSystem的缓存, 分析代码可知使用完FileSystem后没有调用close, 导致没有被回收.

第二个大对象定位为org.apache.logging.log4j.core.layout.StringBuilderEncoder#threadLocal, 该项目中由于需要根据业务id路由日志文件, 查看log4j RoutingAppender文档发现其需要配置清理回收策略IdlePurgePolicy.

<IdlePurgePolicy timeToLive="15" timeUnit="minutes"/>

以上就是jvm oom排查记录的详细内容,更多关于jvm oom排查的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文