【发布时间】:2016-07-22 06:09:11
【问题描述】:
我在 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 开销限制超出”。
我哪里做错了?
【问题讨论】:
-
视情况而定。您的应用程序是否处理大量数据?您是否在 tomcat 中运行大量应用程序?那么 512m 堆可能不够用。或者您的应用程序可能正在泄漏内存,然后修复该应用程序。进行内存转储并使用例如eclipse mat 来分析它。
标签: java garbage-collection tomcat7