gpt4 book ai didi

java - Tomcat7 - 超出 GC 开销限制

转载 作者:行者123 更新时间:2023-12-01 09:40:12 25 4
gpt4 key购买 nike

我正在 tomcat7 中使用以下 bin 配置运行我的 spring 应用程序,

#!/bin/sh
#

CATALINA_HOME=/usr/share/tomcat7

# The first existing directory is used for JAVA_HOME (if JAVA_HOME is not
# defined in $DEFAULT)
JDK_DIRS="/usr/lib/jvm/java-6-openjdk /usr/lib/jvm/java-6-sun /usr/lib/jvm/java-1.5.0-sun /usr/lib/j2sdk1.5-sun /usr/lib/j2sdk1.5-ibm"

# Look for the right JVM to use
for jdir in $JDK_DIRS; do
if [ -r "$jdir/bin/java" -a -z "${JAVA_HOME}" ]; then
JAVA_HOME_TMP="$jdir"
# checks for a real JDK like environment, needed to check if
# really the java-gcj-compat-dev package is installed
if [ -r "$jdir/bin/jdb" ]; then
JAVA_HOME="$JAVA_HOME_TMP"
fi
fi
done
CATALINA_OPTS="-server -Xms512M -Xmx512M -XX:+UseG1GC"

# Default Java options
if [ -z "$JAVA_OPTS" ]; then
#JAVA_OPTS="-Djava.awt.headless=true -Xmx128M"
JAVA_OPTS="-server -Xms512M -Xmx512M -XX:+UseG1GC"
fi

但我仍然面临“java.lang.OutOfMemoryError:超出 GC 开销限制”。

我哪里做错了?

最佳答案

对于这种错误,Java工具提供了所有机制来捕获重要信息。如果不使用它,可能会很复杂并且浪费时间。如果您的问题是可重现的,我建议您在运行 java 进程并尝试重现您的问题时启用内存调试标志。

第一次,我建议您添加 Catalina opts :

-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./heapDumpOOME.log

当抛出 OutOfMemory 错误时,它将创建一个堆转储,并且它是免费的,因为仅当错误发生时它才会消耗资源和 CPU。

如果还不够,请启用 GCC 日志以获取有关使用内存的更多信息以及 gcc 在应用程序运行期间的工作方式。

看看https://confluence.atlassian.com/confkb/how-to-enable-garbage-collection-gc-logging-300813751.html .
它解释了如何在 Tomcat 中执行此操作。

有了它,您应该可以准确地了解内存不足的原因。

关于java - Tomcat7 - 超出 GC 开销限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38519302/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com