本篇内容主要讲解“服务器内存泄漏案例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“服务器内存泄漏案例分析”吧!
1.起因
线上服务经常在提供一段时间的访问之后无法访问或者访问时间太长,问题的原因多种多样。这一次碰到的是内存泄漏。
2.工具安装


tips:文件位置在Jprofiler安装目录的bin目录下,jprofiler.exe。



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版本来解决这个问题。依赖如下:
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf</artifactId>
<version>3.0.11.RELEASE</version>
<exclusions>
<exclusion>
<artifactId>ognl</artifactId>
<groupId>ognl</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf-spring3</artifactId>
<version>3.0.11.RELEASE</version>
</dependency>
<dependency>
<groupId>nz.net.ultraq.thymeleaf</groupId>
<artifactId>thymeleaf-layout-dialect</artifactId>
<version>2.4.1</version>
<exclusions>
<exclusion>
<artifactId>thymeleaf</artifactId>
<groupId>org.thymeleaf</groupId>
</exclusion>
</exclusions>
</dependency>
到此,相信大家对“服务器内存泄漏案例分析”有了更深的了解,不妨来实际操作一番吧!这里是天达云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!