几周前,我们在Wildfly运行应用程序几天后面临更高的CPU使用率。 看看Thread Dump,我们发现C2 Compiler Thread是嫌疑人。
对JVM内存池进行了分析,我们意识到,在使用Wildfly并部署了28个应用程序时,250m
默认ReservedCodeCacheSize
JVM参数是不够的。所以我们将其设置为380m
。
好。 3周后,我们没有问题了。
一切都好吗?还没。系统在3周后启动并运行。
但每次我们部署某个应用程序的新版本(取消部署.war并部署新版本)时,CodeCace的使用会增加。事实上,在取消部署后,CodeCache不会减少。在部署新版本之后,CodeCache会增加。 CodeCache的使用只会增加。
也就是说,在某些时候,在几次hotdeploy之后,CodeCache的内存将达到ReservedCodeCacheSize
,我们需要重新启动Wildfly。
我知道Wildfly无法控制CodeCache,它完全由JVM管理。
我想知道的是,是否有任何配置可能有助于阻止CodeCache达到最大尺寸?
谢谢!