我开发 Web 应用程序并使用 jBoss 4.0.2,当我用 eclipse 重新部署我的 WAR 几次时,jBoss 会因为内存不足而崩溃。当我必须在生产环境中安装新版本时,它会消耗生产服务器的内存,所以这意味着我必须停止 jBoss 以防止重新部署客户服务器的内存。这个问题有什么解决办法吗?

最佳答案

基本上,没有。由于 JBoss 类加载器的工作方式,每次部署都会使用一部分永久代,即使应用程序未部署也不会释放。

您可以通过将 PermGen 内存池大小增加到数百兆(甚至是 gig)来缓解症状,这使问题更容易解决。我还发现,减少代码中静态字段的使用(尤其是引用大对象的静态字段)可以减少对 PermGen 的影响。

理想情况下,我不会在生产中使用热部署,而是关闭服务器,替换 WAR/EAR,然后重新启动它。

关于java - jBoss 4.0.2 多次部署相同的 WAR 会导致 jBoss 由于 PermGem/Out-of-Memory 错误而崩溃,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1307080/

10-16 18:07