有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JVM的linux系统范围内存限制

我运行一个带有8台Minecraft服务器的arch linux服务器。 此服务器有64GB的RAM。不幸的是,我的内存不足,导致linux终止进程

如果我调整单个JVM的-xmx设置,我可以轻松地保持在64GB以下,同时保持良好的性能。但这并不理想,因为不同JVM的负载可能会因以下因素而大不相同:

  • 一天中的时间(球员的时区)
  • 球员人数
  • 背景
  • 环境

因此,例如,如果我将-xmx8G设置为所有服务器,这对于一个只有少数玩家在线的服务器来说太多了,但对于一个来自繁忙时区且当前正在生成新世界的服务器来说,这还不够

理想情况下,我希望为所有JVM设置一个64GB的限制。这可能吗

(不知道这是否相关:JVM在不同的用户下运行。这很方便,但并不要求保持这种状态)

任何提示都将不胜感激


共 (1) 个答案

  1. # 1 楼答案

    不幸的是,Xmx的数量必须适合您的虚拟内存

    您可以添加一个巨大的交换空间,为您的进程获得更多的虚拟内存。我观察到,一旦进程从交换空间获得内存页,它们往往会停留在交换空间中。一个小技巧是添加另一个与第一个相同大小的交换,然后关闭第一个交换。页面将交换回物理RAM。将此添加为常规维护任务