stu*_*naz 6 tomcat centos tomcat6
我买了一个 1gb 内存的虚拟服务器来运行 java 网站应用程序。我已经安装了 Tomcat 6.0.33 。每次我运行 tomcat 时,它都会占用大约 450 mb 的内存。
我尝试了一切来减少它,我将 CATALINA_OPS 设置为
export CATALINA_OPTS="-Xms256m -Xmx256m"
Run Code Online (Sandbox Code Playgroud)
我已经创建了 set setenv.sh 文件,你把它放进去:
JAVA_HOME="/usr/local/java"
export JAVA_HOME
JAVA_OPTS="-Xmx256m -Xms256m"
export JAVA_OPTS
CATALINA_HOME="/usr/local/tomcat"
export CATALINA_HOME
Run Code Online (Sandbox Code Playgroud)
当我通过此命令时: ps -ef | 我有 grep tomcat:
root 3150 1 5 15:32 pts/0 00:00:18 /usr/local/java/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -Xmx256m -Xms256m -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Xms256m -Xmx256m -Djava.endorsed.dirs=/usr/local/tomcat/endorsed -classpath /usr/local/tomcat/bin/bootstrap.jar -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat -Djava.io.tmpdir=/usr/local/tomcat/temp org.apache.catalina.startup.Bootstrap start
root 3217 2041 0 15:37 pts/0 00:00:00 grep tomcat
Run Code Online (Sandbox Code Playgroud)
这表明我的参数确实被使用了。
有没有什么方法可以减少tomcat消耗的内存?谢谢你。
小智 9
这里的问题不是真正的 tomcat,它通常是 java。java 使用内存的地方有很多。java 运行时使用它自己的内存,这将包含在您的号码中,此外,java 将内存分解为四个不同的位置:
堆:这是用于存储对象的内存,由
-Xms
和-Xmx
参数控制。堆栈:这是用于存储程序维护的线程的堆栈帧的内存,可以使用
-Xss
参数进行控制。Permgen 内存:这是用于存储已编译的类和池化字符串以及其他一些东西的内存,通常可以控制,
-XX:MaxPermSize
尽管-XX
代表调试参数,因此不能保证它在所有 JVM 上。但是,默认的 Sun/Oracle 参考实现一直都有它们。JNI 分配内存任何使用本机方法和 JNI 的类都可能分配无限内存。该内存来自操作系统而不是堆,如果无法访问源,就无法知道本机类将使用多少内存。
java内存模型的概述可能超出了这个问题的答案的范围,我在互联网上找不到一篇很好的简洁文章/描述,但对你的问题的简短回答是,如果你试图限制绝对java程序使用的内存量,没有简单的方法来做到这一点。启发式地,可能将您的-Xms
和-Xmx
参数减少到 128m 并且您应该接近,但这实际上将取决于您的应用程序。
归档时间: |
|
查看次数: |
10547 次 |
最近记录: |