Ktor 问题,这样会不会导致 WebSocket 内存泄露?


#1

如图,服务端 WebSocket 向一个 sessions 列表添加了自身,当这个会话被关闭时是否会导致内存泄露?要如何避免呢?


image


#2

没猜错的话你用的应该是 Ktor?在 finnaly 里面把 session 移除就好了

webSocket("/paintBoard/ws") {
    try {
        println("Connected.")
        sessions.add(this)

        for (frame in incoming) {
            println("Received: ${String(frame.readBytes())}")
        }
    } finally {
        sessions.remove(this)
    }
}

#3

在多线程的情况下不会导致什么奇奇怪怪的错误吗


#4

所以不要用 LinkedList ,要用线程安全的集合


#5

好的,我试试


京ICP备16022265号-2 Kotlin China 2017 - 2018