这是我的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的内存。
您可以尝试降低Xmx和MaxPermSize以达到您的最大目标。 通过设置它们的总使用量,使得总和不超过你的最大值。 但是,这取决于部署的应用程序是否工作,或者Tomcat是否会因OutOfMemoryError(尽pipe值得一试)而崩溃。
甲骨文有一个很好的指导,解释不同的世代在他们的垃圾收集器调整参考总结。 (我假设你使用的是Oracle(以前称为Sun)JVM,因为你没有指定任何版本,它应该仍然是最stream行的版本。)