tomcat内存在系统中是如何显示的?
How is tomcat memory displayed by the system?
我在虚拟机上给 tomcat 了大约 3Gb 的 ram,它有大约 8GB,
-Xms3072M -Xmx3072M -Xmn1024M.
在我启动 tomcat 并在终端中输入后
" ps -eo pmem,vsize,pid,cmd | sort -k 1 -nr | head -10"
我得到的第一个也是唯一一个 java 过程的答案是 19.4%
(19.4 7052620 12748 /usr/bin/java...)
我的问题是这 19.4% 是多少 tomcat 没有堆的 ram 内存?
这是我在网上找到的等式:
最大内存 = [-Xmx] + [-XX:MaxPermSize] + number_of_threads * [-Xss] (https://plumbr.io/blog/memory-leaks/why-does-my-java-process-consume-more-memory-than-xmx)
因为8GB的19.4%是2GB,而我的堆是3GB。这是没有堆的ram内存吗?
你没有命名你的 OS,虽然很明显它是 *NIX 类型 OS。
ps
显示的内存是实际分配的内存。它将包括已分配给您的进程的所有 "native"、堆和 mmap
ed 内存。如果您的进程非常年轻(即还没有 运行 很长时间),那么它还不会使用太多的堆。
许多 OS,尤其是 Linux,将允许 malloc to return success,即使实际未分配物理内存。由于 JVM 在启动时立即分配您的 -Xms
设置,您可能希望进程的内存大小至少 3072MiB,但如果该内存实际上不是使用,则 ps
可能会显示比您预期的更小的尺寸。
如果您确实在使用 Linux,请查看 https://serverfault.com/questions/48582 并在网上搜索一下 Linux 内核如何分配内存。此外,如果您 正在 使用 Linux,请考虑将 linux
标签添加到您的问题中。
如果您不使用Linux,您可能需要了解您的OS如何分配内存。如果您的 OS 使用 "overcommit" 策略,那么它的行为将如上所述。
我在虚拟机上给 tomcat 了大约 3Gb 的 ram,它有大约 8GB, -Xms3072M -Xmx3072M -Xmn1024M.
在我启动 tomcat 并在终端中输入后
" ps -eo pmem,vsize,pid,cmd | sort -k 1 -nr | head -10"
我得到的第一个也是唯一一个 java 过程的答案是 19.4% (19.4 7052620 12748 /usr/bin/java...) 我的问题是这 19.4% 是多少 tomcat 没有堆的 ram 内存? 这是我在网上找到的等式:
最大内存 = [-Xmx] + [-XX:MaxPermSize] + number_of_threads * [-Xss] (https://plumbr.io/blog/memory-leaks/why-does-my-java-process-consume-more-memory-than-xmx)
因为8GB的19.4%是2GB,而我的堆是3GB。这是没有堆的ram内存吗?
你没有命名你的 OS,虽然很明显它是 *NIX 类型 OS。
ps
显示的内存是实际分配的内存。它将包括已分配给您的进程的所有 "native"、堆和 mmap
ed 内存。如果您的进程非常年轻(即还没有 运行 很长时间),那么它还不会使用太多的堆。
许多 OS,尤其是 Linux,将允许 malloc to return success,即使实际未分配物理内存。由于 JVM 在启动时立即分配您的 -Xms
设置,您可能希望进程的内存大小至少 3072MiB,但如果该内存实际上不是使用,则 ps
可能会显示比您预期的更小的尺寸。
如果您确实在使用 Linux,请查看 https://serverfault.com/questions/48582 并在网上搜索一下 Linux 内核如何分配内存。此外,如果您 正在 使用 Linux,请考虑将 linux
标签添加到您的问题中。
如果您不使用Linux,您可能需要了解您的OS如何分配内存。如果您的 OS 使用 "overcommit" 策略,那么它的行为将如上所述。