加入收藏 | 设为首页 | 会员中心 | 我要投稿 温州站长网 (https://www.0577zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 外闻 > 正文

值得阅读的内存泄露分析总结和Tomcat调优

发布时间:2019-02-28 19:14:11 所属栏目:外闻 来源:今日头条
导读:副标题#e# 写在最前面,运行环境:tomcat8,jdk1.8,windows server 2008内存16G,软件LoadRunner11,MAT和JProfile9.1。 问题描述:前段时间遇到一个很奇怪的问题,开发的WEB应用,经常会毫无症状的宕掉,然后抓了线程栈看下,发现之前写的数据库链接池出

然后为了确定我这个猜测我又去看了启动日志,在启动日志中看到了:

值得阅读的内存泄露分析总结和Tomcat调优

这不赤裸裸的告诉我们开启了APR的模式嘛。。。这就意味着上面根据Tomcat8默认NIO模式用到了直接内存,得出的关于我的应用部署的Tomcat为什么占用内存持续上升的结论是不成立的!虽然Tomcat确实有NIO的模式,NIO也确实会用到直接内存,分配直接内存时确实会手动调用system.gc(),然后tomcat里面配置-XX:DisableExplicitGC确实会影响内存分配导致直接内存堆积,可是和我这并没什么关系啊。。此时心里万马奔腾,但我冷静一想当我去掉-XX:DisableExplicitGC时,GC日志里面出现了很多Full GC的日志,那不是因为分配直接内存引起的还有谁再调用呢。没办法,只能一直手动抓线程栈来分析,用下面的指令就可以把当前线程栈输出到一个txt文档中。

  1. jstack-l pid>C:UsersAdministratorDesktoplogThreadStack.txt 

这个pid就是你的java线程id。果然抓了几次就被我抓到了现场,线程栈中果然有个线程在执行gc操作,看下图:

值得阅读的内存泄露分析总结和Tomcat调优

这次感觉自己应该是找到了问题本质了,光看这个也看不出什么然后上网搜了下,发现也是Tomcat配置引起的,真相只有一个就是下面这个配置:

值得阅读的内存泄露分析总结和Tomcat调优

(编辑:温州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读