xwiki java.lang.OutOfMemoryError:PermGen空间

xwiki java.lang.OutOfMemoryError:PermGen空间,java,tomcat,xwiki,Java,Tomcat,Xwiki,我刚刚下载并使用war文件在本地计算机上安装。我正在使用hsql通过Tomcat6运行它。我已经启动并运行了它,但每次我使用它,并进入我正在做的任何事情的第5页或第6页时,我都会收到错误java.lang.OutOfMemoryError:PermGen space 我已经将这一行添加到我的catalina.bat文件set JAVA_OPTS=“-Djava.awt.headless=true-Dfile.encoding=UTF-8-server-Xms1536m-Xmx1536m-XX:N

我刚刚下载并使用war文件在本地计算机上安装。我正在使用hsql通过Tomcat6运行它。我已经启动并运行了它,但每次我使用它,并进入我正在做的任何事情的第5页或第6页时,我都会收到错误
java.lang.OutOfMemoryError:PermGen space

我已经将这一行添加到我的catalina.bat文件
set JAVA_OPTS=“-Djava.awt.headless=true-Dfile.encoding=UTF-8-server-Xms1536m-Xmx1536m-XX:NewSize=256m-XX:MaxNewSize=256m-XX:PermSize=1024m-XX:+DisableExplicitGC-XX:+cmspermgensweepingnabled-XX:+cmassunloadingenabled-XX:useCmarksweepgc”
而且它似乎对解决问题没有帮助

感谢您的帮助

编辑

完整的catalina.bat文件:

@echo off
rem Licensed to the Apache Software Foundation (ASF) under one or more
rem contributor license agreements.  See the NOTICE file distributed with
rem this work for additional information regarding copyright ownership.
rem The ASF licenses this file to You under the Apache License, Version 2.0
rem (the "License"); you may not use this file except in compliance with
rem the License.  You may obtain a copy of the License at
rem
rem     http://www.apache.org/licenses/LICENSE-2.0
rem
rem Unless required by applicable law or agreed to in writing, software
rem distributed under the License is distributed on an "AS IS" BASIS,
rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
rem See the License for the specific language governing permissions and
rem limitations under the License.

if "%OS%" == "Windows_NT" setlocal
rem ---------------------------------------------------------------------------
rem Start/Stop Script for the CATALINA Server
rem
rem Environment Variable Prerequisites
rem
rem   CATALINA_HOME   May point at your Catalina "build" directory.
rem
rem   CATALINA_BASE   (Optional) Base directory for resolving dynamic portions
rem                   of a Catalina installation.  If not present, resolves to
rem                   the same directory that CATALINA_HOME points to.
rem
rem   CATALINA_OPTS   (Optional) Java runtime options used when the "start",
rem                   or "run" command is executed.
rem
rem   CATALINA_TMPDIR (Optional) Directory path location of temporary directory
rem                   the JVM should use (java.io.tmpdir).  Defaults to
rem                   %CATALINA_BASE%\temp.
rem
rem   JAVA_HOME       Must point at your Java Development Kit installation.
rem                   Required to run the with the "debug" argument.
rem
rem   JRE_HOME        Must point at your Java Runtime installation.
rem                   Defaults to JAVA_HOME if empty.
rem
rem   JAVA_OPTS       (Optional) Java runtime options used when the "start",
rem                   "stop", or "run" command is executed.
rem
rem   JAVA_ENDORSED_DIRS (Optional) Lists of of semi-colon separated directories
rem                   containing some jars in order to allow replacement of APIs 
rem                   created outside of the JCP (i.e. DOM and SAX from W3C). 
rem                   It can also be used to update the XML parser implementation.
rem                   Defaults to $CATALINA_HOME/endorsed.
rem
rem   JPDA_TRANSPORT  (Optional) JPDA transport used when the "jpda start"
rem                   command is executed. The default is "dt_socket".
rem
rem   JPDA_ADDRESS    (Optional) Java runtime options used when the "jpda start"
rem                   command is executed. The default is 8000.
rem
rem   JPDA_SUSPEND    (Optional) Java runtime options used when the "jpda start"
rem                   command is executed. Specifies whether JVM should suspend
rem                   execution immediately after startup. Default is "n".
rem
rem   JPDA_OPTS       (Optional) Java runtime options used when the "jpda start"
rem                   command is executed. If used, JPDA_TRANSPORT, JPDA_ADDRESS,
rem                   and JPDA_SUSPEND are ignored. Thus, all required jpda
rem                   options MUST be specified. The default is:
rem
rem                   -agentlib:jdwp=transport=%JPDA_TRANSPORT%,
rem                       address=%JPDA_ADDRESS%,server=y,suspend=%JPDA_SUSPEND%
rem
rem   LOGGING_CONFIG  (Optional) Override Tomcat's logging config file
rem                   Example (all one line)
rem                   set LOGGING_CONFIG="-Djava.util.logging.config.file=%CATALINA_BASE%\conf\logging.properties"
rem
rem   LOGGING_MANAGER (Optional) Override Tomcat's logging manager 
rem                   Example (all one line)
rem                   set LOGGING_MANAGER="-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager"
rem
rem   TITLE           (Optional) Specify the title of Tomcat window. The default
rem                   TITLE is Tomcat if it's not specified.
rem                   Example (all one line)
rem                   set TITLE=Tomcat.Cluster#1.Server#1 [%DATE% %TIME%]
rem
rem
rem
rem $Id: catalina.bat 1146097 2011-07-13 15:25:05Z markt $
rem ---------------------------------------------------------------------------

set CATALINA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms1536m -Xmx1536m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=1024m -XX:MaxPermSize=1024m -XX:+DisableExplicitGC -XX:+CMSPermGenSweepingEnabled -XX:+CMSClassUnloadingEnabled"

rem Guess CATALINA_HOME if not defined
set "CURRENT_DIR=%cd%"
if not "%CATALINA_HOME%" == "" goto gotHome
set "CATALINA_HOME=%CURRENT_DIR%"
if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome
cd ..
set "CATALINA_HOME=%cd%"
cd "%CURRENT_DIR%"
:gotHome
if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome
echo The CATALINA_HOME environment variable is not defined correctly
echo This environment variable is needed to run this program
goto end
:okHome

rem Copy CATALINA_BASE from CATALINA_HOME if not defined
if not "%CATALINA_BASE%" == "" goto gotBase
set "CATALINA_BASE=%CATALINA_HOME%"
:gotBase

rem Ensure that any user defined CLASSPATH variables are not used on startup,
rem but allow them to be specified in setenv.bat, in rare case when it is needed.
set CLASSPATH=

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

rem Get standard Java environment variables
if exist "%CATALINA_HOME%\bin\setclasspath.bat" goto okSetclasspath
echo Cannot find "%CATALINA_HOME%\bin\setclasspath.bat"
echo This file is needed to run this program
goto end
:okSetclasspath
set "BASEDIR=%CATALINA_HOME%"
call "%CATALINA_HOME%\bin\setclasspath.bat" %1
if errorlevel 1 goto end

if not "%CATALINA_TMPDIR%" == "" goto gotTmpdir
set "CATALINA_TMPDIR=%CATALINA_BASE%\temp"
:gotTmpdir

rem Add tomcat-juli.jar and bootstrap.jar to classpath
rem tomcat-juli.jar can be over-ridden per instance
rem Note that there are no quotes as we do not want to introduce random
rem quotes into the CLASSPATH
if "%CLASSPATH%" == "" goto emptyClasspath
set "CLASSPATH=%CLASSPATH%;"
:emptyClasspath
if "%CATALINA_BASE%" == "%CATALINA_HOME%" goto juliClasspathHome
if not exist "%CATALINA_BASE%\bin\tomcat-juli.jar" goto juliClasspathHome
set "CLASSPATH=%CLASSPATH%%CATALINA_BASE%\bin\tomcat-juli.jar;%CATALINA_HOME%\bin\bootstrap.jar"
goto juliClasspathDone
:juliClasspathHome
set "CLASSPATH=%CLASSPATH%%CATALINA_HOME%\bin\bootstrap.jar"
:juliClasspathDone

if not "%LOGGING_CONFIG%" == "" goto noJuliConfig
set LOGGING_CONFIG=-Dnop
if not exist "%CATALINA_BASE%\conf\logging.properties" goto noJuliConfig
set LOGGING_CONFIG=-Djava.util.logging.config.file="%CATALINA_BASE%\conf\logging.properties"
:noJuliConfig
set JAVA_OPTS=%JAVA_OPTS% %LOGGING_CONFIG%

if not "%LOGGING_MANAGER%" == "" goto noJuliManager
set LOGGING_MANAGER=-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
:noJuliManager
set JAVA_OPTS=%JAVA_OPTS% %LOGGING_MANAGER%

rem ----- Execute The Requested Command ---------------------------------------

echo Using CATALINA_BASE:   "%CATALINA_BASE%"
echo Using CATALINA_HOME:   "%CATALINA_HOME%"
echo Using CATALINA_TMPDIR: "%CATALINA_TMPDIR%"
if ""%1"" == ""debug"" goto use_jdk
echo Using JRE_HOME:        "%JRE_HOME%"
goto java_dir_displayed
:use_jdk
echo Using JAVA_HOME:       "%JAVA_HOME%"
:java_dir_displayed
echo Using CLASSPATH:       "%CLASSPATH%"

set _EXECJAVA=%_RUNJAVA%
set MAINCLASS=org.apache.catalina.startup.Bootstrap
set ACTION=start
set SECURITY_POLICY_FILE=
set DEBUG_OPTS=
set JPDA=

if not ""%1"" == ""jpda"" goto noJpda
set JPDA=jpda
if not "%JPDA_TRANSPORT%" == "" goto gotJpdaTransport
set JPDA_TRANSPORT=dt_socket
:gotJpdaTransport
if not "%JPDA_ADDRESS%" == "" goto gotJpdaAddress
set JPDA_ADDRESS=8000
:gotJpdaAddress
if not "%JPDA_SUSPEND%" == "" goto gotJpdaSuspend
set JPDA_SUSPEND=n
:gotJpdaSuspend
if not "%JPDA_OPTS%" == "" goto gotJpdaOpts
set JPDA_OPTS=-agentlib:jdwp=transport=%JPDA_TRANSPORT%,address=%JPDA_ADDRESS%,server=y,suspend=%JPDA_SUSPEND%
:gotJpdaOpts
shift
:noJpda

if ""%1"" == ""debug"" goto doDebug
if ""%1"" == ""run"" goto doRun
if ""%1"" == ""start"" goto doStart
if ""%1"" == ""stop"" goto doStop
if ""%1"" == ""version"" goto doVersion

echo Usage:  catalina ( commands ... )
echo commands:
echo   debug             Start Catalina in a debugger
echo   debug -security   Debug Catalina with a security manager
echo   jpda start        Start Catalina under JPDA debugger
echo   run               Start Catalina in the current window
echo   run -security     Start in the current window with security manager
echo   start             Start Catalina in a separate window
echo   start -security   Start in a separate window with security manager
echo   stop              Stop Catalina
echo   version           What version of tomcat are you running?
goto end

:doDebug
shift
set _EXECJAVA=%_RUNJDB%
set DEBUG_OPTS=-sourcepath "%CATALINA_HOME%\..\..\java"
if not ""%1"" == ""-security"" goto execCmd
shift
echo Using Security Manager
set "SECURITY_POLICY_FILE=%CATALINA_BASE%\conf\catalina.policy"
goto execCmd

:doRun
shift
if not ""%1"" == ""-security"" goto execCmd
shift
echo Using Security Manager
set "SECURITY_POLICY_FILE=%CATALINA_BASE%\conf\catalina.policy"
goto execCmd

:doStart
shift
if not "%OS%" == "Windows_NT" goto noTitle
if "%TITLE%" == "" set TITLE=Tomcat
set _EXECJAVA=start "%TITLE%" %_RUNJAVA%
goto gotTitle
:noTitle
set _EXECJAVA=start %_RUNJAVA%
:gotTitle
if not ""%1"" == ""-security"" goto execCmd
shift
echo Using Security Manager
set "SECURITY_POLICY_FILE=%CATALINA_BASE%\conf\catalina.policy"
goto execCmd

:doStop
shift
set ACTION=stop
set CATALINA_OPTS=
goto execCmd

:doVersion
%_EXECJAVA% -classpath "%CATALINA_HOME%\lib\catalina.jar" org.apache.catalina.util.ServerInfo
goto end


:execCmd
rem Get remaining unshifted command line arguments and save them in the
set CMD_LINE_ARGS=
:setArgs
if ""%1""=="""" goto doneSetArgs
set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1
shift
goto setArgs
:doneSetArgs

rem Execute Java with the applicable properties
if not "%JPDA%" == "" goto doJpda
if not "%SECURITY_POLICY_FILE%" == "" goto doSecurity
%_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION%
goto end
:doSecurity
%_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Djava.security.manager -Djava.security.policy=="%SECURITY_POLICY_FILE%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION%
goto end
:doJpda
if not "%SECURITY_POLICY_FILE%" == "" goto doSecurityJpda
%_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %JPDA_OPTS% %DEBUG_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION%
goto end
:doSecurityJpda
%_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %JPDA_OPTS% %DEBUG_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Djava.security.manager -Djava.security.policy=="%SECURITY_POLICY_FILE%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION%
goto end

:end
bin\setclasspath.bat

@echo off
rem Licensed to the Apache Software Foundation (ASF) under one or more
rem contributor license agreements.  See the NOTICE file distributed with
rem this work for additional information regarding copyright ownership.
rem The ASF licenses this file to You under the Apache License, Version 2.0
rem (the "License"); you may not use this file except in compliance with
rem the License.  You may obtain a copy of the License at
rem
rem     http://www.apache.org/licenses/LICENSE-2.0
rem
rem Unless required by applicable law or agreed to in writing, software
rem distributed under the License is distributed on an "AS IS" BASIS,
rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
rem See the License for the specific language governing permissions and
rem limitations under the License.

rem ---------------------------------------------------------------------------
rem Set CLASSPATH and Java options
rem
rem $Id: setclasspath.bat 908749 2010-02-10 23:26:42Z markt $
rem ---------------------------------------------------------------------------

rem Make sure prerequisite environment variables are set
if not "%JAVA_HOME%" == "" goto gotJdkHome
if not "%JRE_HOME%" == "" goto gotJreHome
echo Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
echo At least one of these environment variable is needed to run this program
goto exit

:gotJreHome
if not exist "%JRE_HOME%\bin\java.exe" goto noJavaHome
if not exist "%JRE_HOME%\bin\javaw.exe" goto noJavaHome
if not ""%1"" == ""debug"" goto okJavaHome
echo JAVA_HOME should point to a JDK in order to run in debug mode.
goto exit

:gotJdkHome
if not exist "%JAVA_HOME%\bin\java.exe" goto noJavaHome
if not exist "%JAVA_HOME%\bin\javaw.exe" goto noJavaHome
if not exist "%JAVA_HOME%\bin\jdb.exe" goto noJavaHome
if not exist "%JAVA_HOME%\bin\javac.exe" goto noJavaHome
if not "%JRE_HOME%" == "" goto okJavaHome
set "JRE_HOME=%JAVA_HOME%"
goto okJavaHome

:noJavaHome
echo The JAVA_HOME environment variable is not defined correctly
echo This environment variable is needed to run this program
echo NB: JAVA_HOME should point to a JDK not a JRE
goto exit
:okJavaHome

if not "%BASEDIR%" == "" goto gotBasedir
echo The BASEDIR environment variable is not defined
echo This environment variable is needed to run this program
goto exit
:gotBasedir
if exist "%BASEDIR%\bin\setclasspath.bat" goto okBasedir
echo The BASEDIR environment variable is not defined correctly
echo This environment variable is needed to run this program
goto exit
:okBasedir

rem Don't override the endorsed dir if the user has set it previously
if not "%JAVA_ENDORSED_DIRS%" == "" goto gotEndorseddir
rem Set the default -Djava.endorsed.dirs argument
set "JAVA_ENDORSED_DIRS=%BASEDIR%\endorsed"
:gotEndorseddir

rem Set standard command for invoking Java.
rem Note that NT requires a window name argument when using start.
rem Also note the quoting as JAVA_HOME may contain spaces.
set _RUNJAVA="%JRE_HOME%\bin\java"
set _RUNJDB="%JAVA_HOME%\bin\jdb"

goto end

:exit
exit /b 1

:end
exit /b 0

解决方案确实是增加
-XX:MaxPermSize
值,并且
1024m
应该足够了(实际上它相当大)。您仍然得到错误的事实表明该值被忽略,很可能它被其他地方覆盖了


据我所知,有一个
CATALINA_OPTS
覆盖了
JAVA_OPTS
中设置的许多参数。在
catalina.bat
文件中进一步查找另一个定义了
MaxPermSize
设置的地方。

解决方案确实是增加
-XX:MaxPermSize
值,
1024m
应该足够了(实际上相当大)。您仍然得到错误的事实表明该值被忽略,很可能它被其他地方覆盖了


据我所知,有一个
CATALINA_OPTS
覆盖了
JAVA_OPTS
中设置的许多参数。在
catalina.bat
文件中进一步查找另一个定义了
MaxPermSize
设置的地方。

xwiki论坛的某个人发布了他们的setenv.bat文件,我不得不对其进行一些调整,但这似乎解决了我的问题

REM # Set the Environment (32-bit/64-bit) 

SET JAVA_32_64=64 


REM # Recommended memory settings for 32-bit Java; Default Test, Default Prod 

SET "MCK_MEM_32_OPTS=-server -Xms1024m -Xmx1024m -Xmn256m -XX:MaxPermSize=200m" 



REM # Recommended memory settings for 64-bit Java; Default Test, Default Prod 

SET "MCK_MEM_64_OPTS=-server -Xms2048m -Xmx2048m -Xmn512m -XX:MaxPermSize=300m 


REM # Configure Specific JVM Settings 

SET "MCK_GC_OPTS=-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:%CATALINA_HOME%/logs/gclog.log -verbose:gc -Xbatch -XX:HeapDumpPath=%CATALINA_HOME%/logs -XX:ErrorFile=%CATALINA_HOME%/logs -XX:+TraceClassLoading -XX:+TraceClassUnloading -Djava.awt.headless=true" 



REM # Configure Application Home Directories 

SET "JDK_HOME=C:\Program Files\Java" 

SET "JAVA_32_HOME=%JDK_HOME%\jdk1.6.0_32" 

SET "JAVA_64_HOME=%JDK_HOME%\jdk1.6.0_32" 

SET "JRE_32_HOME=%JAVA_32_HOME%\jre" 

SET "JRE_64_HOME=%JAVA_64_HOME%\jre" 




:64BIT 

SET "MCK_MEM_OPTS=%MCK_MEM_64_OPTS%" 

SET "JAVA_HOME=%JAVA_64_HOME%" 

SET "JRE_HOME=%JRE_64_HOME%" 

goto :CONTINUE 



:CONTINUE 

REM # Specify Memory Options for JBoss JVM 

SET "JAVA_OPTS=%JAVA_OPTS% %MCK_MEM_OPTS% " 



ECHO. 

ECHO =============================================================================== 

ECHO SETENV.BAT 

ECHO =============================================================================== 

ECHO. 

ECHO Running with the following Environment variables: 

ECHO. 

ECHO MCK_MEM_OPTS = %MCK_MEM_OPTS% 

ECHO JAVA_HOME = %JAVA_HOME% 

ECHO JRE_HOME = %JRE_HOME% 

ECHO JAVA_OPTS = %JAVA_OPTS% 

ECHO. 

ECHO =============================================================================== 

ECHO. 

xwiki论坛的某个人发布了他们的setenv.bat文件,我不得不对其进行一些调整,但这似乎解决了我的问题

REM # Set the Environment (32-bit/64-bit) 

SET JAVA_32_64=64 


REM # Recommended memory settings for 32-bit Java; Default Test, Default Prod 

SET "MCK_MEM_32_OPTS=-server -Xms1024m -Xmx1024m -Xmn256m -XX:MaxPermSize=200m" 



REM # Recommended memory settings for 64-bit Java; Default Test, Default Prod 

SET "MCK_MEM_64_OPTS=-server -Xms2048m -Xmx2048m -Xmn512m -XX:MaxPermSize=300m 


REM # Configure Specific JVM Settings 

SET "MCK_GC_OPTS=-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:%CATALINA_HOME%/logs/gclog.log -verbose:gc -Xbatch -XX:HeapDumpPath=%CATALINA_HOME%/logs -XX:ErrorFile=%CATALINA_HOME%/logs -XX:+TraceClassLoading -XX:+TraceClassUnloading -Djava.awt.headless=true" 



REM # Configure Application Home Directories 

SET "JDK_HOME=C:\Program Files\Java" 

SET "JAVA_32_HOME=%JDK_HOME%\jdk1.6.0_32" 

SET "JAVA_64_HOME=%JDK_HOME%\jdk1.6.0_32" 

SET "JRE_32_HOME=%JAVA_32_HOME%\jre" 

SET "JRE_64_HOME=%JAVA_64_HOME%\jre" 




:64BIT 

SET "MCK_MEM_OPTS=%MCK_MEM_64_OPTS%" 

SET "JAVA_HOME=%JAVA_64_HOME%" 

SET "JRE_HOME=%JRE_64_HOME%" 

goto :CONTINUE 



:CONTINUE 

REM # Specify Memory Options for JBoss JVM 

SET "JAVA_OPTS=%JAVA_OPTS% %MCK_MEM_OPTS% " 



ECHO. 

ECHO =============================================================================== 

ECHO SETENV.BAT 

ECHO =============================================================================== 

ECHO. 

ECHO Running with the following Environment variables: 

ECHO. 

ECHO MCK_MEM_OPTS = %MCK_MEM_OPTS% 

ECHO JAVA_HOME = %JAVA_HOME% 

ECHO JRE_HOME = %JRE_HOME% 

ECHO JAVA_OPTS = %JAVA_OPTS% 

ECHO. 

ECHO =============================================================================== 

ECHO. 


值得指出的是,
JAVA\u OPTS
适用于所有由Tomcat脚本启动的JVM(包括发送“shutdown”命令),而
CATALINA\u OPTS
只能用于启动Tomcat进程。
JAVA_OPTS
的上述设置将需要分配1.5GiB堆,仅用于向正在运行的Tomcat发送“shutdown”命令。我强烈建议将
JAVA\u-OPTS
更改为
CATALINA\u-OPTS
。我最近将JAVA\u-OPTS更改为CATALINA\u-OPTS,但仍然没有解决此问题。xwiki的文档是否表明它需要较大的永久空间?您是否在不重新启动Tomcat的情况下多次重新加载Web应用程序?文档建议使用512m。不重新启动tomcat就重新加载webapp是什么意思?我有一个浏览器,里面有一个应用程序,然后我编辑一个页面,创建一个新页面,可能编辑另一个页面,然后出现一个-permgen错误。如果你正在破坏permgen,你可能应该去和xwiki的人谈谈:1Gb的permgen是淫秽的。“重新加载webapp”,我的意思是:在服务器上重新加载webapp。我不是说从你的浏览器中重新加载网页。我说的是通过各种机制重新部署ServletContext。写得不好的Web应用程序或使用错误库的Web应用程序,只要重新加载一两次,就很容易导致PermGen耗尽。检查
catalina.out
以查看您的webapp是否意外地重新加载自身(您将在那里收到一条信息)。值得指出的是
JAVA\u OPTS
适用于所有由Tomcat脚本启动的JVM(包括发送“shutdown”命令),而
catalina\u OPTS
只能用于启动Tomcat进程。
JAVA_OPTS
的上述设置将需要分配1.5GiB堆,仅用于向正在运行的Tomcat发送“shutdown”命令。我强烈建议将
JAVA\u-OPTS
更改为
CATALINA\u-OPTS
。我最近将JAVA\u-OPTS更改为CATALINA\u-OPTS,但仍然没有解决此问题。xwiki的文档是否表明它需要较大的永久空间?您是否在不重新启动Tomcat的情况下多次重新加载Web应用程序?文档建议使用512m。不重新启动tomcat就重新加载webapp是什么意思?我有一个浏览器,里面有一个应用程序,然后我编辑一个页面,创建一个新页面,可能编辑另一个页面,然后出现一个-permgen错误。如果你正在破坏permgen,你可能应该去和xwiki的人谈谈:1Gb的permgen是淫秽的。“重新加载webapp”,我的意思是:在服务器上重新加载webapp。我不是说从你的浏览器中重新加载网页。我说的是通过各种机制重新部署ServletContext。写得不好的Web应用程序或使用错误库的Web应用程序,只要重新加载一两次,就很容易导致PermGen耗尽。查看
catalina.out
以查看您的Web应用程序是否意外地重新加载自身(您将在那里收到一条信息消息)。我已发布了我的整个catalina.bat文件。它应该是相当标准的,除了我添加的行。我不知道这些行是否覆盖了我的行。你应该使用
bin/setenv.bat
自定义环境,而不是直接编辑
bin/catalina.bat
catalina.bat
将调用
setenv.bat
如果它存在,那么您就不必担心在新版本的Tomcat可用时保持
catalina.bat
最新。
catalina.bat
文件看起来正常,因此必须有另一个文件重新定义内存设置
catalina.bat
似乎包括两个这样的文件,
setenv.bat
bin\setclasspath.bat
。没有setenv.bat文件,我用setclasspath.bat的内容编辑了这个问题。还有一个想法:删除
CA周围的引号