gpt4 book ai didi

spring - JSP/PrimeFaces Spring Boot Tomcat 内存泄漏问题

转载 作者:行者123 更新时间:2023-11-28 22:18:34 25 4
gpt4 key购买 nike

我用

Tomcat 8.0.26
jsf 2.2.12
primefaces 5.2
Spring Boot 1.2.6.RELEASE
Spring 4.2.1.RELEASE

我在 Tomcat Web Application Manager 中使用了 Reload 按钮,在重新加载我的应用程序 (domain-api) 后出现了以下问题:

The following web applications were stopped (reloaded, undeployed), but their
classes from previous runs are still loaded in memory, thus causing a memory
leak (use a profiler to confirm):
/domain-api

此外,通过 Java VisualVM,我可以看到“重新加载”后 javax.faces.* 对象的增长

这是采样器内存快照比较:

enter image description here

如何解决?

最佳答案

以前管理过类似的问题,通过在 JAVA_OPTS 中调整 java 垃圾收集器解决了这个问题:

JAVA_OPTS="$JAVA_OPTS -XX:+CMSParallelRemarkEnabled -XX:ParallelGCThreads=8 -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=35 -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:-UseAdaptiveSizePolicy -XX:SurvivorR比例= 6"

地点:

-XX:+UseCMSInitiatingOccupancyOnly 避免对垃圾收集器功能使用启发式规则。

-XX:CMSInitiatingOccupancyFraction 当CMS(Concurrent MArk Sweeper)被激活时的位置。

-XX:-UseAdaptiveSizePolicy 禁用调整内存世代大小(有了这个我们可以设置参数 -XX: SurvivorRatio = 6)。

-XX:SurvivorRatio=6 将eden survivor 关系设置为1:6,这将为年轻对象提供更多空间。

为了优化垃圾收集器线程的性能,使用了以下参数:

-XX:+CMSParallelRemarkEnabled : 减少 CMS 之间的停顿。

-XX:ParallelGCThreads=8 设置垃圾收集的并行线程数为8(每个服务器处理器一个)。

-XX:+UseParNewGC 当你有多个处理器时,这个收集器与多线程中的原始收集器不同。

-XX:+UseConcMarkSweepGC 是并发收集器的一种垃圾收集算法,它试图在后台完成大部分垃圾收集工作,而不会在运行时停止应用程序线程。

在我的例子中,使用这些选项可以更快地释放内存。更快地清理伊甸园和旧内存,优化资源释放。

关于spring - JSP/PrimeFaces Spring Boot Tomcat 内存泄漏问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32869116/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com