我在同一台计算机上运行 java 游戏服务器和游戏客户端
游戏客户端
java -Xms512m -Xmx1024m -cp 等等
和游戏服务器
java -Xmx1024M -Xms1024M -jar 等
计算机属性:
- Windows 7 64 位
- 8GB 内存
- 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。
最佳答案
Has the problem of the lag to do anything with java virtual machine?
可能吧。您没有提供足够的证据来确定其中一种方式。
令人费解的是你的客户端运行在不同的机器上并不卡顿。
Am I using one instance of machine or two?
您正在运行 java
的两个副本,那么您将拥有两个 JVM。
Can I setup something different in order to optimize the performance?
答案很可能是肯定的。但是您没有提供足够的信息来让我们提出可靠的建议。
延迟可能由多种原因引起,包括:
- 具有高延迟的网络。
- JVM 的堆太小。
- 生成大量垃圾并触发过多垃圾收集的应用程序。
- 竞争资源的应用程序组合;例如物理内存、CPU 时间或磁盘或网络 I/O 时间。
如果您要找到问题的根本原因,则需要进行一些监控以找出以上哪一项可能是问题。使用任务管理器或其他工具来检查系统是否受 CPU 限制、内存不足、执行大量磁盘或网络操作等。使用 VisualVM 查看 JVM 内部发生了什么。
或者,您可以尝试用一些完全不科学的“旋钮转动”来修复:
- 尝试使 -Xms 和 -Xmx 参数相同(这可能会减少启动时的延迟...)
- 尝试增加 JVM 堆的大小;例如使它们成为 2gb 而不是 1gb
- 尝试使用更新版本的 Java
- 尝试使用 64 位 JVM,以便进一步增加堆大小
- 尝试启用 CMS 或 G1 收集器(取决于您使用的 JVM 版本)。
如果我更了解你目前使用的是什么,我可能会给出更具体的建议......
关于java - 多个 java 实例 -Xms -Xmx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15180475/