gpt4 book ai didi

linux - 即使在 Tomcat 重启后 PermGen 问题仍然存在(Linux,Tomcat 6.0.35)

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:45:52 25 4
gpt4 key购买 nike

Tomcat 存在众所周知的内存泄漏问题,该问题会在重新部署过多后导致 PermGen 空间错误。

我想知道的是以完全重置该空间并消除现有内存泄漏的方式重新加载服务器的最佳实践。仅使用 shutdown.sh 和 startup.sh 并不能解决问题:泄漏的内存似乎一直在泄漏。重启机器当然可以,但我想知道是否存在更快/更清洁/更安全的解决方案。

谢谢!

(当然,我可以分配更多的 PermGen 空间,但这只是延迟了问题,我想在声明应用程序为生产就绪之前清除泄漏的内存,因为之后我要换工作并且因此应用暂时不会重新部署)

编辑:正如下面的评论中所提到的,似乎脚本应该已经刷新了所有内存,因为它们创建了一个新的 JVM,所以必须有一些其他因素导致 PermGen 错误甚至在新的 JVM 中继续发生,之后许多重新部署。

最佳答案

Tomcat 没有有 PermGen 泄漏,webapp 是否重新部署。问题出在您的 webapp 本身、您使用的库,或者在某些情况下,出在 Java 标准库实现上。所有这些都可以解决,而无需诉诸于挥舞 ARM 和指责 Tomcat。

尝试阅读 http://people.apache.org/~markt/presentations/2010-11-04-Memory-Leaks-60mins.pdf了解如何正确诊断这些泄漏。给自己一个分析器(这甚至可以使用 JDK 中包含的免费实用程序(如 JVisualVM)来完成)。

Tomcat 7 包含一个内存泄漏预防实用程序,可以解决有问题的 Java API 实现(例如 AWT)。其他一切都是您的问题或图书馆的问题。大多数发现此类 PermGen 泄漏的开源库都已迅速修补它们的库以避免它们(或为客户端代码提供一种优雅的方式来避免 PermGen 泄漏)。

关于linux - 即使在 Tomcat 重启后 PermGen 问题仍然存在(Linux,Tomcat 6.0.35),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11312596/

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