为什么我的垃圾回收日志显示可用最大堆大小为3.8GB,而我已将最大堆大小分配为4GB?
为什么我的垃圾回收日志显示可用最大堆大小为3.8GB,而我已将最大堆大小分配为4GB?
我在一台64位的RHEL 6机器上安装了一个64位的Hotspot JDK版本1.7.0。我在我的tomcat应用程序中使用以下JVM选项。\nCATALINA_OPTS=\"${CATALINA_OPTS} -Dfile.encoding=UTF8 -Dorg.apache.catalina.loader.WebappClassLoader.ENABLE_CLEAR_REFERENCES=false -Duser.timezone=EST5EDT\"\n# 通用的堆大小设置\nCATALINA_OPTS=\"${CATALINA_OPTS} -Xms4096m -Xmx4096m -XX:NewSize=2048m -XX:MaxNewSize=2048m -XX:PermSize=512m -XX:MaxPermSize=512m -XX:+UseCompressedOops -XX:+DisableExplicitGC\"\n# 启用CMS GC策略\nCATALINA_OPTS=\"${CATALINA_OPTS} -XX:+UseConcMarkSweepGC -XX:CMSWaitDuration=15000 -XX:+CMSParallelRemarkEnabled -XX:+CMSCompactWhenClearAllSoftRefs -XX:+CMSConcurrentMTEnabled -XX:+CMSScavengeBeforeRemark -XX:+CMSClassUnloadingEnabled\"\n# 详细的垃圾收集日志记录\nCURRENT_DATE=`date +%Y%m%d%H%M%S`\nCATALINA_OPTS=\"${CATALINA_OPTS} -verbose:gc -XX:+PrintGCDetails -Xloggc:${CATALINA_BASE}/logs/gc-${CURRENT_DATE}.log -XX:+PrintGCDateStamps -XX:+PrintTenuringDistribution\"\n当我进行垃圾收集分析时,GC日志显示的最大可用堆大小仅为3.8GB,而不是分配给JVM的4GB。为什么会这样?