Java 游戏开发中的CPU还是RAM?

Java 游戏开发中的CPU还是RAM?,java,memory,cpu,Java,Memory,Cpu,我开始使用Java编写的游戏服务器。诚然,Java不是服务器开发的最佳解决方案,但它是我最熟悉的语言 我试图设计这个游戏服务器来处理大量的连接,但我不确定应该更多地关注什么:将数据存储在内存中还是降低内存使用率并使用更多的原始CPU功率?当然取决于你的游戏是什么样的。我最近用5000个客户机测试了我的服务器,大约20MB的ram。你可能保存的州数据比我多得多,这可能是个问题 您在许多连接中遇到的严重问题是设置套接字以正确处理它,使用某种方式的套接字处理会陷入困境或中断@1024个连接等。我不确定

我开始使用Java编写的游戏服务器。诚然,Java不是服务器开发的最佳解决方案,但它是我最熟悉的语言


我试图设计这个游戏服务器来处理大量的连接,但我不确定应该更多地关注什么:将数据存储在内存中还是降低内存使用率并使用更多的原始CPU功率?

当然取决于你的游戏是什么样的。我最近用5000个客户机测试了我的服务器,大约20MB的ram。你可能保存的州数据比我多得多,这可能是个问题

您在许多连接中遇到的严重问题是设置套接字以正确处理它,使用某种方式的套接字处理会陷入困境或中断@1024个连接等。我不确定您在java中可以做多少优化

看看我在说什么


祝你好运!而且,尽快将语言切换到一种提供与java相当的功能但没有可怕缺点(即Objective-C或C#)的语言。我不是在“猛烈抨击java”,而是当你谈论做一些有性能的事情时,你会遇到的问题是java会把你从操作系统中抽象出来,当你需要优化时,你将无法利用它。

我不建议你设计服务器的目的远远超出你真正需要的范围。如果你突然发现你有10000个客户,你可以重新设计系统

我会从一个基本服务器开始,例如,i5的8GB内存低于500英镑,或者i7的24GB内存低于1000英镑

随着连接数量的增加,除非您使用云解决方案,否则在资源耗尽之前,您可能会耗尽带宽


顺便说一句:您可以在Java中实现一个延迟不到100微秒的高频交易系统。我没有听说过任何Objective-C高频交易系统。C#可能在Windows上的性能也一样或更好,但我更喜欢Linux作为服务器系统。

这是一个相当普遍的问题,所以这里有一个普遍的答案:尽可能多地使用内存,并牺牲时间来处理需要更多内存的大量数据。为什么要重新发明轮子?当然,除非这是你的目标:)看看黑星计划的继任者。谢谢,我感谢你的回复!我正在使用一个名为KryoNet()的库进行套接字管理,它经过了高度优化,主要是为Java游戏开发而创建的。按照你的建议,我将尽快退出Java。有很多方法可以使用Java,同时仍然可以获得操作系统的优化。您可以将繁重的工作封装在本机库中,并使用JNI调用它们。@支持我建议的一个解释是,我用一种语言(C++)编写了游戏引擎,并决定在完成约50%后用另一种语言(Objective-C)重写它。让我说,我花了比我预期的要长得多的时间来完成这项工作。我的课程绝对是“随心所欲”——如果你想学另一种语言,这将是一个很好的方法来实践这种语言。如果你希望以后重写,你可能真的给自己造成了一片混乱。祝你好运