使用以下Java选项启动Apache Tomcat(Atlassian Confluence)实例:
JAVA_OPTS="-Xms256m -Xmx512m -XX:MaxPermSize=256m -Djava.awt.headless=true "
Run Code Online (Sandbox Code Playgroud)
但是我发现在启动之后它会快速吞噬我虚拟服务器上可用的大部分1GB内存.
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
6082 root 19 0 1105m 760m 16m S 0.7 74.2 5:20.51 java
Run Code Online (Sandbox Code Playgroud)
整体消耗的内存(heap + PermGen)是否应该保持在使用-Xmx指定的内存之下?这导致的一个问题是我无法使用关闭脚本关闭服务器,因为它尝试生成具有256MB内存的JVM,因为它没有可用而失败.
例如,本机库可以轻松地在Java堆外部分配内存.
Direct ByteBuffer也这样做:http://docs.oracle.com/javase/7/docs/api/java/nio/ByteBuffer.html
直接缓冲区的内容可能位于正常的垃圾收集堆之外,因此它们对应用程序的内存占用量的影响可能并不明显.
有充分的理由分配庞大的直接ByteBuffers.
http://ehcache.org/documentation/offheap_store.html
Tomcat 总内存消耗应计算为不少于Xmx + XX:MaxPermSize(在您的情况下为 768MB),但我确实记得在某个地方看到过它可以超过这个值。Xmx只是堆空间,并且PermGen位于堆之外(某种程度)。
| 归档时间: |
|
| 查看次数: |
7651 次 |
| 最近记录: |