服务器内存泄漏案例分析
本篇内容主要讲解"服务器内存泄漏案例分析",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"服务器内存泄漏案例分析"吧!
1.起因
线上服务经常在提供一段时间的访问之后无法访问或者访问时间太长,问题的原因多种多样。这一次碰到的是内存泄漏。
2.工具安装
生产工具是Jetbrains Idea,使用的内存分析工具Jprofiler
首先安装Jprofiler,由于是收费软件,我这里选择了适用10天
然后在Idea中安装Jprofiler插件
安装完成profiler插件之后,重启Idea,这里会出现一个小图标
点击小图标使用Jprofiler工具启动启动你的项目,这里第一次启动会要求你配置Jprofiler工具的启动文件如下图:
tips:文件位置在Jprofiler安装目录的bin目录下,jprofiler.exe。
这里选择Evaluate试用
3.使用分析工具
打开Live memory,查看All Objects选项,左侧是各种对象的占用内存大小和实例数目
这里选择Run Gc,然后执行Mark current保存内存情况的快照,然后执行Start Recordings
访问出现内存泄漏的页面,访问完成后执行Stop Recordings,然后执行Run Gc
下图中出现红色柱子的就是没有被GC的对象
选择出现红色的对象实例如下,执行show selection in heap walker
执行use selected objects,选择references
选择show paths to gc root
如上图的对象就是出现内存泄漏的罪魁祸首。
翻阅了thymeleaf-layout-dialect的官方更新文档,发现官方已经处理了内存泄漏的问题,升级jar包之后问题解决了。
4总结
thymeleaf-layout-dialect在2.0.0版本之前存在内存泄漏的问题,在2.0.1之后官方开始注意到这个问题,并开始逐步解决,目前使用的是2.4.1版本来解决这个问题。依赖如下:
org.thymeleaf thymeleaf 3.0.11.RELEASE ognl ognl org.thymeleaf thymeleaf-spring3 3.0.11.RELEASE nz.net.ultraq.thymeleaf thymeleaf-layout-dialect 2.4.1 thymeleaf org.thymeleaf
到此,相信大家对"服务器内存泄漏案例分析"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!