我有几个应用程序在 Glassfish 应用程序服务器 (4.0) 上运行。我已经使用 DataDog 记录了 Java 内存使用情况的一些统计信息,因此我能够查看已用堆内存的历史记录以及初始和最大常量堆大小。
正如您在上面看到的,实际堆大小始终低于初始堆值,因此我计划移动这些参数以提高服务器的性能,但我不确定这是否真的有必要。
所以,我有这样的疑问:
- 是否值得修改堆参数?
- 如果是这样,哪些参数通常是正确的? (例如:初始值比平均实际堆值高 100 mb,最大值是该数字的两倍)。
我想这个问题对于 tomcat、JBoss 或任何面向 servlet 的服务器来说都是正确的。
如有任何帮助,我们将不胜感激。
最佳答案
这要看情况。另外,根据我的回答,您的图像不会显示。
如果你的机器对内存要求很高,并且你是一个没有无限收入的个人,我认为你的方法会很好。我建议一开始使用稍高的任意百分比,例如 50%,以提供一点回旋空间。继续分析内存使用情况并相应地调整最大值。我认为没有任何理由将内存使用率设置为低于默认值。
否则,您可以更加无偿地提供 100-200% 的额外内存,以防您的应用程序遇到突然的重负载。
关于java - 服务器上建议的初始堆大小和最大堆大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45147143/