减少Tomcat6的内存占用

减少Tomcat6的内存占用

这是我的 setenv.bat(Windows 安装)。它是 MySQL 企业监控服务管理器。

set JAVA_HOME=D:\MYSQL_~2\SERVIC~1\java
set JAVA_OPTS= ++JvmOptions="-XX:+UseParallelOldGC"  ++JvmOptions="-XX:+UseBiasedLocking" ++JvmOptions="-XX:+HeapDumpOnOutOfMemoryError" ++JvmOptions="-XX:HeapDumpPath=D:\MYSQL_~2\SERVIC~1\apache-tomcat\temp" ++JvmOptions="-Xms128m" ++JvmOptions="-Xmx256m" ++JvmOptions="-XX:MaxPermSize=256m" 

我想将内存占用保持在200M以下(我的意思是通过查看任务管理器中的tomcat6.exe)。

总是超过 400M!出了什么问题?

编辑:我的setenv.bat在tomcat\bin下

答案1

-Xms-Xmx分别定义最小和最大堆大小。因此,在您的配置中,堆本身将能够超过 256M。但是,您还设置了-XX:MaxPermSize=256m定义永久代可能占用多少空间。堆和永久代是分开的,因此,根据您使用的配置,您的 JVM 可能最多占用 256M(通过 Xmx 的堆)+ 256M(MaxPermSize)= 512M 内存。

您可以尝试降低两者Xmx,并MaxPermSize通过设置它们以使总使用量不超过最大值来实现最大 200M 的目标。但是,这是否有效或 Tomcat 是否会因 OutOfMemoryError 而崩溃取决于部署的应用程序(不过值得一试)。

Oracle 有一个很好的指南,解释了不同代如何在其垃圾收集器调优参考(我假设您正在使用 Oracle(以前称为 Sun)JVM,因为您没有指定任何版本,但它仍然应该是最受欢迎的版本。)

相关内容