java Mule热部署用完PermGen
我有一个运行着大量RSS连接器的Mule实例,还有一个运行在同一个Mule上下文中的服务,它接收RSS提要更新/删除/添加。当某个提要发生更改时,该服务会通过触摸Mule配置文件触发热部署。很好。Mule重新加载上下文并获取更改
然而,每次我进行热部署时,类加载器都会重新加载几乎所有的类,几乎每次都会重复最初的PermGen内存占用。最终,我用完了PermGen空间,骡子坠毁了。无论我把它做得多大,每次热部署都需要更多的空间。我在你的工具箱里监视这个,FWIW
我发现了一些关于让服务器使用共享库,而不是在每个上下文中加载新库的通用信息。我假设每次热部署发生时,都会创建一个新的Mule上下文,Mule会将所有类重新加载到新上下文中,而不是使用已经加载的类
如何在不耗尽PermGen的情况下进行多个热部署
谢谢
# 1 楼答案
根据直接与Mule支持部门合作的同事的建议,除了偶尔重启之外,使用热部署似乎不是一种好的或可靠的做法。他们被劝阻不要使用它;相反,建议他们重新启动整个Mule服务器
这对我来说也不是个好选择。然而,事实证明,每当我需要添加新的流时,创建新的Mule上下文就可以了。我只是创建上下文,添加新的流,然后启动上下文。简单、快速、干净
这家工厂对我来说运转良好。如果您有特殊需求,可能需要使用ConfigurationBuilder
例如:
请注意,这是在Mule 3.4.0中实现的,但我也在3.5.0中测试了我的原始问题,并遇到了相同的问题。这一修正对双方都有效
# 2 楼答案
尝试在跑步配置中添加“-XX:PermSize=128M-XX:MaxPermSize=256M”->;参数选项卡->;VM参数