Java ApacheKaraf启动脚本。如何设置更多的烫发内存?

Java ApacheKaraf启动脚本。如何设置更多的烫发内存?,java,memory,out-of-memory,permgen,apache-karaf,Java,Memory,Out Of Memory,Permgen,Apache Karaf,我想知道如何增加karaf的永久记忆。在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=%JAV

我想知道如何增加karaf的永久记忆。在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\u PERM\u MEM
JAVA\u MAX\u PERM\u 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
)
会增加永久存储器吗?我之所以需要这样做,是因为我不断得到由以下原因引起的:
:java.lang.OutOfMemoryError:PermGen space

编辑:


部署在karaf上的所有捆绑包都与spring相关,它们有驼峰路由、cxf端点、OpenJPA持久性配置,所有这些都是通过spring管理的。但我不认为存在问题,因为据我所知,OutOfMemory PermGen空间意味着没有足够的内存供所有部署的应用程序使用。如果有人知道问题出在哪里,这将非常有帮助。

这些变量可能会从您的环境中读取,所以只需定义它们

export JAVA_PERM_MEM...

关于PermGen异常,您是否可以使用spring DM?还是一些与spring相关的osgi包?这方面有几个问题。

我已经编辑了我的问题,在karaf中部署了与spring相关的捆绑包。@PauliusMatulionis您可以尝试增加此内存,但通常是不够的。您也可以告诉Java对这个内存进行GC。这里有这样的答案,您不需要手动精确化此变量,只需编辑%container%/bin/setenv脚本即可