以下是我的JVM设置:
JAVA_OPTS=-server -Xms2G -Xmx2G -XX:MaxPermSize=512M -Dsun.rmi.dgc.client.gcInterval=1200000 -Dsun.rmi.dgc.server.gcInterval=1200000 -XX:+UseParallelOldGC -XX:ParallelGCThreads=2 -XX:+UseCompressedOops -Djava.net.preferIPv4Stack=true -Djboss.modules.system.pkgs=org.jbos88,server=y,suspend=n
问题:
总堆内存:2GB
老年代:1.4GB(堆的2/3)
新生代:600MB(堆的1/3)老年代内存超过其分配大小的70%,即使达到100%(即1.4GB),也不被GC处理。如下图所示,它的内存使用率持续高峰,并且从未被GC。在JConsole中强制进行GC时,内存下降。这个问题最终会导致Web服务器崩溃。
我是否错过了什么或错误地设置了JVM?
谢谢提前帮助。
更新我的问题:
堆分析后,看起来有状态会话bean是主要嫌疑人:
![enter image description here](https://istack.dev59.com/g6vLe.webp)