jvm oom排查记录剖析
命令
命令 | 作用 |
---|---|
jmap -dump:live,format=b,file=java.hprof {pid} | dump内存 |
jhat -refs true dump.hprof | 分析 |
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp/heapdump.hprof | oomdump |
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排查的资料请关注脚本之家其它相关文章!
相关文章
SpringBoot基于Redis实现生成全局唯一ID的方法
在项目中生成全局唯一ID有很多好处,生成全局唯一ID有助于提高系统的可用性、数据的完整性和安全性,同时也方便数据的管理和分析,所以本文给大家介绍了SpringBoot基于Redis实现生成全局唯一ID的方法,文中有详细的代码讲解,需要的朋友可以参考下2023-12-12java日期时间格式化@JsonFormat与@DateTimeFormat的使用
本文主要介绍了java日期时间格式化@JsonFormat与@DateTimeFormat的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2022-08-08Java日期时间处理问题(从Date、Calendar到SimpleDateFormat)
这篇文章主要介绍了Java日期时间处理深度解析(从Date、Calendar到SimpleDateFormat),我们详细讨论了Java中的日期和时间处理,包括Date、Calendar和SimpleDateFormat类的使用,以及Java 8引入的新的日期时间API的优势,需要的朋友可以参考下2024-08-08idea创建包含多个springboot module的maven project的方法
这篇文章主要介绍了idea创建包含多个springboot module的maven project的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2020-09-09
最新评论