我试图弄清楚如何增加 karaf 的 permgen 记忆。在 karaf 的启动脚本中,我看到有:
if not "%JAVA_PERM_MEM%" == "" (
set DEFAULT_JAVA_OPTS=%DEFAULT_JAVA_OPTS% -XX:PermSize=%JAVA_PERM_MEM%
)
if not "%JAVA_MAX_PERM_MEM%" == "" (
set DEFAULT_JAVA_OPTS=%DEFAULT_JAVA_OPTS% -XX:MaxPermSize=%JAVA_MAX_PERM_MEM%
)
我知道JAVA_PERM_MEM
andJAVA_MAX_PERM_MEM
是变量,但它们没有在启动脚本中的任何地方定义,除了这里。
karaf 正在现场机器上运行,所以我不想对其进行任何实验,我需要确定是否这样做:
if not "%JAVA_PERM_MEM%" == "" (
set DEFAULT_JAVA_OPTS=%DEFAULT_JAVA_OPTS% -XX:PermSize=512M
)
if not "%JAVA_MAX_PERM_MEM%" == "" (
set DEFAULT_JAVA_OPTS=%DEFAULT_JAVA_OPTS% -XX:MaxPermSize=1024M
)
会增加permgen内存吗?我需要这样做的原因是因为我不断得到:Caused by: java.lang.OutOfMemoryError: PermGen space
编辑:
karaf 上部署的所有包都与 spring 相关,它们有骆驼路由、cxf 端点、OpenJPA 持久性配置,所有这些都是通过 Spring 管理的。但我不认为有问题,因为据我所知,OutOfMemory PermGen 空间意味着所有部署的应用程序都没有足够的内存。如果有人知道问题可能出在哪里,那将非常有帮助。