繁体   English   中英

多个java实例-Xms -Xmx

[英]multiple java instances -Xms -Xmx

我在同一台计算机上运行java游戏服务器和游戏客户端

游戏客户端

java -Xms512m -Xmx1024m -cp etc etc

和游戏服务器

java -Xmx1024M -Xms1024M -jar etc etc

电脑属性:

  • Windows 7 64位
  • 8GB RAM
  • CPU i5-2500 @ 3.3GHz
  • 英特尔高清显卡

问题:游戏客户体验严重滞后。 在游戏服务器也通过LAN连接另一个没有滞后问题的玩家!

有没有与Java虚拟机做任何事情的滞后问题? 我使用一台或两台机器吗?

我可以设置不同的东西以优化性能吗?

我认为这个问题与一台机器正在运行并且它的最大内存对于两个实例都不够的事实有关,但我真的不知道如何解决这个问题。

编辑:没有应用程序内存不足。


方案

1:更新的Java版本:

java version "1.6.0_31"
Java(TM) SE Runtime Environment (build 1.6.0_31-b05)
Java HotSpot(TM) 64-Bit Server VM (build 20.6-b01, mixed mode)

java version "1.7.0_15"
Java(TM) SE Runtime Environment (build 1.7.0_15-b03)
Java HotSpot(TM) 64-Bit Server VM (build 23.7-b01, mixed mode)

2:更改服务器属性以最小化要求,这似乎是主要原因。

3:增加内存:带有java -Xms1024m -Xmx1024m -cp etc etc游戏客户端和游戏服务器java -Xmx2048M -Xms2048M -jar etc etc服务器现在运行大约700MB。

有没有与Java虚拟机做任何事情的滞后问题?

有可能。 你没有提供足够的证据来确定这种或那种方式。

令人费解的是,在不同机器上运行的客户端并不迟钝。

我使用一台或两台机器吗?

您正在运行两个java副本,然后您将拥有两个JVM。

我可以设置不同的东西以优化性能吗?

答案可能是肯定的。 但是你没有提供足够的信息来让我们提出可靠的建议。


滞后可能是由许多事情引起的,包括:

  • 具有高延迟的网络。
  • 一个堆太小的JVM。
  • 一个生成大量垃圾并触发过多垃圾收集的应用程序。
  • 竞争资源的混合应用程序; 例如物理内存,CPU时间或光盘或网络I / O时间。

如果您要找到问题的根本原因,则需要进行一些监控以确定上述哪个是可能出现的问题。 使用任务管理器或其他任何内容来检查系统是否受CPU限制,内存不足,执行大量磁盘或网络操作等。使用VisualVM查看JVM内部的情况。


或者,您可以尝试修复一些完全不科学的“旋钮”:

  • 尝试使-Xms和-Xmx参数相同(这可能会减少开始时的松弛......)
  • 尝试增加JVM堆的大小; 例如,使它们2gb而不是1gb
  • 尝试使用更新版本的Java
  • 尝试使用64位JVM,以便您可以进一步增加堆大小
  • 尝试启用CMS或G1收集器(取决于您使用的JVM版本)。

如果我对你目前使用的内容了解得更多,我可以提出更具体的建议......

您在同一台计算机上使用两个Java应用程序,导致运行2个JVM。 对于具有8GB RAM的64位系统,建议使用最大2GB(25%的物理内存或75%的可用物理内存,最大2 GB)以获得更好的性能。

您可能需要查看JVM大小调整。 为了获得更好的性能,Xms和Xmx的大小可以与最大尺寸括号保持一致。

将内存大小分配给Heap并不是唯一需要考虑的方面。 JVM使用的内存不仅仅是Heap。 其他内存区域,如线程堆栈,方法区域,类加载器子系统,本机方法堆栈等。虽然两个应用程序(游戏服务器,游戏客户端)都在运行,但两个应用程序之间的操作系统内存管理存在问题。 ,导致缓慢。 在这种情况下,客户端应用程序可以部署在另一个核心(如果可用)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM