我已经安装了JBoss BRMS 6.4的可部署版本。 我的linux虚拟机有09 Gb的内存。 为了控制JVM内存,我通过修改JAVA_OPTS行修改了standalone-secure.conf文件:
JAVA_OPTS =“ - Xms6G -Xmx6G -XX:MaxPermSize = 3g -Djava.net.preferIPv4Stack = true”
我重新启动BRMS服务,但在执行BRMS规则时,top命令显示java仍然消耗超过6千兆位的内存。
如何解决这个问题,或者在JBoss EAP中控制Java内存的最佳方法是什么?
感谢您的帮助社区
答案 0 :(得分:0)
-Xmx参数控制Java堆的最大大小,但它不是分配给java进程的唯一内存。除了Xmx,PermGen,JVM内部使用的本机C ++堆之外,线程堆栈的空间在64位JVM上默认为每个线程1mb。所以java进程占用的总内存是
JvmProcessMemory = JvmHeap + PermGen + (ThreadStackSize* Number-of-Threads) + Jvm-native-c++-heap