在tomcat\bin文件中建立setenv.sh文件,內容以下:html
export JAVA_OPTS="-Dfile.encoding=UTF-8 -Xms128m -Xmx1024m -XX:PermSize=64m -XX:MaxPermSize=256m"
不少時候,在開發階段Tomcat重複的重啓過程當中會遇到java.lang.OutOfMemoryError : PermGen space 錯誤。java
1apache
2tomcat
3spa
4翻譯
java.lang.OutOfMemoryError: PermGen space
rest
at java.lang.ClassLoader.defineClass1(Native Method)
code
at java.lang.ClassLoader.defineClass(ClassLoader.java:
620
)
htm
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:
124
)
內存怎麼解決這種問題呢?
默認狀況下,在程序運行中Tomcat只分配了很是小的PermGen內存, 所以須要增長PermGen內存,你能夠經過下面的Java VM選項設置。
1
2
-XX:PermSize<size> - Set initial PermGen Size.
-XX:MaxPermSize<size> - Set the maximum PermGen Size.
換成Tomcat,該怎麼設置呢? 接下來告訴你若是在Windows和Linux環境下,經過Tomcat來設置這些VM選項。
Windows
Tomcat是由腳本catalina.bat來管理的。深刻到腳本里面,你會發現catalina.bat會去查找而且運行setenv.bat文件。這個文件就是用來設置環境變量的。
1
2
3
4
5
6
7
8
9
10
//{$tomcat-folder}\bin\catalina.bat
//...
rem Get standard environment variables
if
not exist
"%CATALINA_BASE%\bin\setenv.bat"
goto
checkSetenvHome
call
"%CATALINA_BASE%\bin\setenv.bat"
goto
setenvDone
:checkSetenvHome
if
exist
"%CATALINA_HOME%\bin\setenv.bat"
call
"%CATALINA_HOME%\bin\setenv.bat"
:setenvDone
//...
在Windows中設置環境,你須要手工建立setenv.bat文件,而後把它放在${tomcat-folder}\bin 目錄下面。
1
2
//${tomcat-folder}\bin\setenv.bat
set JAVA_OPTS=-Dfile.encoding=UTF-
8
-Xms128m -Xmx1024m -XX:PermSize=64m -XX:MaxPermSize=256m
注意:這裏的JAVA_OPTS={value}沒有雙引號。
重啓tomcat,它會自動調用setenv.bat文件來設置這些環境變量。
1
{$tomcat-folder}\bin\catalina.bat restart
Linux
Linux平臺下原理是同樣的, 只是文件變成了catalina.sh 和 setenv.sh.
找到catalina.sh文件, 若是你不知道放在什麼目錄, 那麼全盤掃描一下:
1
2
3
4
5
6
catalina.sh
$ sudo find / -name
"catalina.sh"
Password:
find: /dev/fd/
3
: Not a directory
find: /dev/fd/
4
: Not a directory
/Users/mkyong/Downloads/apache-tomcat-
6.0
.
35
/bin/catalina.sh
你會看到和Windows下相似的代碼:
1
2
3
4
5
6
7
8
9
10
11
//...
# Ensure that any user defined CLASSPATH variables are not used on startup,
# but allow them to be specified in setenv.sh, in rare
case
when it is needed.
CLASSPATH=
if
[ -r
"$CATALINA_BASE/bin/setenv.sh"
]; then
.
"$CATALINA_BASE/bin/setenv.sh"
elif [ -r
"$CATALINA_HOME/bin/setenv.sh"
]; then
.
"$CATALINA_HOME/bin/setenv.sh"
fi
//...
建立setenv.sh,把它放在${tomcat-folder}\bin\}目錄下, 文件的內容是:
1
export JAVA_OPTS=
"-Dfile.encoding=UTF-8 -Xms128m -Xmx1024m -XX:PermSize=64m -XX:MaxPermSize=256m"
注意:這裏和Windows有細微區別,這裏的value是有雙引號的export JAVA_OPTS=」{value}」。
重啓Tomcat。
注意:我這裏設置的Perm Gen大小僅僅是示例,你須要根據本身的項目須要來調整他們的值。
原文連接: mkyong 翻譯: ImportNew.com - 劉志軍
譯文連接: http://www.importnew.com/10427.html
[ 轉載請保留原文出處、譯者和譯文連接。]