首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Netty-Socketio Scala中的内存提升问题

Netty-Socketio Scala中的内存提升问题
EN

Stack Overflow用户
提问于 2021-03-01 09:51:27
回答 1查看 74关注 0票数 0

我在Scala应用程序中使用netty-socketio 1.7.18,但是过了一段时间,它以内存不足的错误关闭了应用程序。

我用Javascript创建了一个简单的socketio客户机,并且我不断刷新网页以连接/断开浏览器中的连接/断开连接,堆大小增长非常快(每次重新加载大约100 is ),而且它从未被释放。高达130 It。

我试过手动调用GC,但它没有发布。从VisualVM的角度来看,原因似乎是网络缓冲区。

起初,我怀疑我自己的Scala代码。我将Netty项目的Java演示转换为Scala,以创建一个简单的服务器。但我意识到,当我在Scala中使用netty-socketio时,就会出现这个问题。还有人有这个问题吗?我在找解决办法。

代码语言:javascript
复制
package com.wstest

import com.corundumstudio.socketio.{AckRequest, Configuration, SocketIOClient, SocketIOServer}
import com.corundumstudio.socketio.listener.DataListener


object ScalaLauncher {

  @throws[InterruptedException]
  def main(args: Array[String]): Unit = {
    val config = new Configuration
    config.setHostname("localhost")
    config.setPort(9092)
    val server = new SocketIOServer(config)
    server.addEventListener("chatevent", classOf[String], new DataListener[String]() {
      override def onData(client: SocketIOClient, data: String, ackRequest: AckRequest): Unit = { // broadcast messages to all clients
        server.getBroadcastOperations.sendEvent("chatevent", data)
      }
    })
    server.start()
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-12 13:06:55

我用Config.setWorkerThreads(1)解决了

每次刷新页面时,都会启动一个新的nioEventLoopGroup线程,而旧线程没有关闭。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66419884

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档