排查圣杯/时髦的内存泄漏?

2022-09-03 01:30:25

我有一个Grails应用程序,它执行了相当数量的域对象创建和销毁,它似乎以非常非常快的速度耗尽了PermGen空间。我做了通常的调整(将PermGen提高到256M,启用类GC等),但没有骰子。

有没有人愿意推荐一些(希望是免费的或非常低成本的)工具来排除Groovy和/或Java中的这种内存消耗?或者您用来解决 JVM 内存问题的一些技术?

编辑:这是当应用程序以生产模式部署在Tomcat内部时;我没有尝试过使用其他容器。即便如此,如果有一些资源来追踪问题,那就太好了。


答案 1

你试过吗

-XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled

?

再加上增加通常的嫌疑人(,和),这解决了我们生产Tomcat上的所有PermGen问题,这些问题在部署应用程序后不久就发生了。在那之后再也没有见过另一个OOM例外。:-)-Xmx-Xms-XX:PermSize-XX:MaxPermSize


答案 2

我个人喜欢VisualVM。肯定有更强大的工具,但这个工具具有很好的可用性与功率比。


推荐