减lessTomcat6的内存占用

这是我的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(我的意思是在任务pipe理器中查看tomcat6.exe)。

它始终高于400M! 怎么了?

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

-Xms-Xmx定义最小和最大堆大小。 所以单独的堆就可以在你的configuration中超过256M。 但是,您还设置了-XX:MaxPermSize=256m ,它定义了永久生成的-XX:MaxPermSize=256m空间。 堆和永久生成是分开的,所以根据您使用的configuration,您的JVM可能需要256M(通过Xmx的堆)+ 256M(MaxPermSize)= 512M的内存。

您可以尝试降低XmxMaxPermSize以达到您的最大目标。 通过设置它们的总使用量,使得总和不超过你的最大值。 但是,这取决于部署的应用程序是否工作,或者Tomcat是否会因OutOfMemoryError(尽pipe值得一试)而崩溃。

甲骨文有一个很好的指导,解释不同的世代在他们的垃圾收集器调整参考总结。 (我假设你使用的是Oracle(以前称为Sun)JVM,因为你没有指定任何版本,它应该仍然是最stream行的版本。)