我有一个系统不能为 Java 进程提供超过 1.5 Gb 的容量。因此,我需要一种确切的方法来指定 java 进程设置,包括 java 中的所有内存类型和可能的 fork。
一个特定的java进程和系统来说明我的问题:
我当前的环境是 Ubuntu Linux 9.10 下的 java 1.6.0_18。
我使用以下 JVM 选项启动大型 Java 服务器进程:“-Xms512m -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=512m”
现在,“top”命令报告该进程使用 1.6GB 内存......
问题:
1 - 如何计算java进程使用的最大空间?如果可能,请提供准确的公式。( Smth. Like: max.heap + max.perm + stack + jvm space = maximal space )
2 - 就我而言,Linux 下臭名昭著的分叉行为是什么?分叉的 JVM 会占用额外的 1.6 GB(导致总共 3.2 Gb 的已用内存)吗?
3 - 必须使用哪些选项才能绝对确保任何时候使用的内存不超过 1.5GB?
谢谢你
@rancidfishbreath:“ulimit”将确保java不能占用超过指定数量的内存。我的目的是确保 java 永远不会尝试这样做。