- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 tomcat7 和 JRE 1.8 运行 Java WebApp。该应用程序缓存大量数据(~15GB),并支持高吞吐量(~4K/秒)。由于高请求率,在新生代产生大量对象,部分对象在新生代ParNew收集后存活下来,被移动到survivor,最终移动到堆内存中的老年代空间。
这些对象在老一代中不断累积。当老年代快满时,CMS 开始运行,这导致了 stop-the-world GC。这会影响我的应用程序的延迟。
为了避免这种情况,我开始使用 CMSInitiatingOccupancyFraction=85
和 +UseCMSInitiatingOccupancyOnly
。然而,尽管有这两个选项,当老年代已满 85% 时,CMS 不会启动。它仍然发生在老年代几乎满了并且进行 stop-the-world GC 时。我搜索了 CMSInitiatingOccupancyFraction
的局限性,但找不到解释该行为的任何相关链接。请在下面找到我的 tomcat 进程的确切命令行:
jsvc.exec -home /usr/lib/jvm/jre1.8.0_45 -user tomcat7 \
-pidfile /home/ameya/service/2.0.4-SNAPSHOT/logs/catalina-daemon.pid \
-outfile /home/ameya/service/2.0.4-SNAPSHOT/logs/catalina-daemon.out \
-errfile &1 \
-classpath /home/ameya/conf/service:/home/ameya/service/2.0.4-SNAPSHOT/bin/bootstrap.jar:/home/ameya/service/2.0.4-SNAPSHOT/bin/commons-daemon.jar:/home/ameya/service/2.0.4-SNAPSHOT/bin/tomcat-juli.jar \
-Djava.util.logging.config.file=/home/ameya/service/2.0.4-SNAPSHOT/conf/logging.properties \
-XX:+UseConcMarkSweepGC \
-XX:+CMSIncrementalMode \
-XX:+CMSIncrementalPacing \
-XX:+ExplicitGCInvokesConcurrent \
-Djava.awt.headless=true \
-XX:PermSize=1G \
-XX:MaxPermSize=5G \
-XX:+UseCMSInitiatingOccupancyOnly \
-XX:CMSInitiatingOccupancyFraction=85 \
-Xms12G -Xmx24G \
-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=9004 \
-Dcom.sun.management.jmxremote.local.only=false \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.ssl=false \
-Duser.language=en \
-Duser.country=US \
-Dsun.net.inetaddr.ttl=30 \
-XX:+HeapDumpOnOutOfMemoryError \
-XX:HeapDumpPath=/tmp/dump.tmp \
-XX:+AggressiveOpts \
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager \
-Djava.endorsed.dirs= \
-Dcatalina.base=/home/ameya/service/2.0.4-SNAPSHOT \
-Dcatalina.home=/home/ameya/service/2.0.4-SNAPSHOT \
-Djava.io.tmpdir=/home/ameya/service/2.0.4-SNAPSHOT/temp \
org.apache.catalina.startup.Bootstrap
谁能帮我理解为什么 CMS 在老年代已满 85% 时不启动运行?
最佳答案
根据oracle forums增量 CMS 忽略 InitiatingOccupancyFraction。
iCMS 也是 deprecated和 will be removed在 openjdk 9 中。在服务器机器上没有多大意义,因为它主要用于在具有一个或两个内核的处理器上运行的应用程序。
关于Java 8 : CMS does not kick on for old generation even though CMSInitiatingOccupancyFraction specified,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32941229/
我配置了以下内存选项: export MEM_OPTS="-Xmx2560m -Xms2560m -XX:NewSize=786m -XX:MaxNewSize=786m -XX:+UseTLAB -
我们正在使用用 Java 编写的数据库 (Apache Geode)。我们的服务器有 64g RAM,因此我们将 Java 堆(Xms 和 Xmx)设置为大约 62g RAM。 对于此类情况,我见过的
我们有一个 1.7.0_151-b00 JVM,即使未达到 CMSInitiatingOccupancyFraction,它也开始执行连续的 CMS 循环。 我试图理解为什么 JVM 在达到 CMSI
我正在使用 tomcat7 和 JRE 1.8 运行 Java WebApp。该应用程序缓存大量数据(~15GB),并支持高吞吐量(~4K/秒)。由于高请求率,在新生代产生大量对象,部分对象在新生代P
我是一名优秀的程序员,十分优秀!