LibGDX GWT - 导致临时FPS峰值的WebSocket

时间:2015-07-16 07:39:53

标签: javascript java gwt websocket libgdx

背景:

我实现了一个使用WebSocket与服务器通信的客户端。客户端应用程序的核心是在LibGDX的基础上构建的,它仅使用GWT(HTML5 / JavaScript)以浏览器形式部署。这是一个侧面项目 - 一个快节奏(高网络流量),在线,基于浏览器的游戏。

没有提供任何来源 - 本质上客户端代码是一个空的LibGDX应用程序,它提供gwt-websockets的正确实现(一个常用的JavaScript websockets GWT包装器)。

问题的症状:

(预先注意:这似乎是纯粹的客户端问题)我启动应用程序并连接到服务器。在1000毫秒间隔,客户端应用程序将一个数据包发送到服务器并接收一个数据包 - 没有问题。当我每秒发送和/或接收两个,三个甚至五个数据包时也没有问题。

加快这个过程但是...大约每秒发送超过10个数据包(100毫秒间隔)从客户端到服务器或每秒接收超过10个数据包(100毫秒间隔)或发送和接收10每秒数据包(100毫秒间隔)会导致客户端在数据包进入,退出或两者兼有时缓慢降低FPS。网络通信越多,FPS楼层变得越低(如果继续发送数据包,则从60 ... 55..50..45 ......慢慢排到1)。同时,服务器完全健康。

这是一个奇怪的事情让我怀疑客户端上存在某种缓冲区溢出 - 在数据包被处理后#34; (注意:我的Websocket.onHandle()方法是空的),FPS跳回到~60,好像什么都没发生过一样。从这一点来看,如果发送或接收数据包,则FPS会向右下降到最低值(除非每次发生这种情况稍微恶化)。

进一步调试:

  • 我已经研究过我的内存泄漏的可能性,但之后 经过一个15小时的调试会话我怀疑我的代码有问题 在这里(更不用说它基本上是空的)。我的网络类 通过Websocket进行通信实际上包含了一些简单的内容 实施和症状仅在网络活动时发生。

  • 我已经读过有关可能造成垃圾收集的垃圾收集 性能在GWT部署中命中。我对此并不了解 除了我不能排除它。

  • 我怀疑这很重要,但我的服务器使用Java-WebSocket 与客户gwt-websocket

  • 沟通

MY BEST GUESS:

我真的很难过。我怀疑的是gwt-websockets中存在某种带缓冲区和频繁网络流量处理或可能存在内存泄漏的错误。

0 个答案:

没有答案