在工作中,我们遇到了" PermGen内存不足 "异常的问题,团队领导决定它是JVM中的一个错误 - 与代码的热部署有关.在没有解释许多细节的情况下,他指出热部署是一个"难题",即使.NET还没有这么做也很难.
我从鸟瞰图中发现了很多解释热部署的文章,但总是缺乏技术细节.有人能指出我的技术解释,并解释为什么热部署是"一个难题"?
我已经通过热部署教程,它的工作原理.但我对这些限制有疑问(第3点)即
热部署仅支持方法实现中的代码更改.如果添加新类或新方法,仍需要重新启动.
基本上,如果我在现有方法中进行更改,但在添加方法或类的情况下需要,我们不需要重新启动服务器.
我理解它是如何工作的: -当我在现有方法中进行更改或引入新方法时,Eclipse会将文件放在webserver下的正确位置.如果类已经由perm gen空间中的类加载器加载,它将从permgen空间卸载它并在内部加载新的,而不重新启动服务器,以便反映新的更改(字节代码).那是对的吗 ?
如果是,为什么热部署不适用于新方法和新类文件?
我一直在检查JRebel.根据他们的网站:
"JRebel是一个任何Java插件,通过将工作空间中的更改重新加载到正在运行的JVM中,加速基于JVM的开发(Java,Scala,Groovy),无需重新启动或重新部署,在编码时维护应用程序的状态".
这似乎与我们已经使用Eclipse,Netbeans和IntelliJ实现的相同:我们保存并立即部署我们的更改.JRebel会给我们带来哪些额外的好处?
有人可以向我解释一下吗?