【发布时间】:2021-02-26 09:45:41
【问题描述】:
我用 nodejs 编写了一个在线聊天网站,我正在使用地图对象来跟踪在线用户。
const onlineUsers = new Map();
const userRoomList = new Map();
const userIpList = new Map();
function addClientToMap(username, status = 'vis'){
if(!onlineUsers.has(username)){
onlineUsers.set(username, status)
}
}
function addUserIpList(username, ip){
if(!userIpList.has(username)){
userIpList.set(username, ip)
}
}
function removeClientFromMap(username, socketId){
if(onlineUsers.has(username)){
onlineUsers.delete(username);
userRoomList.delete(username);
}
}
我正在存储用户的用户名,但它们会导致内存泄漏。所以我需要一个更好的选择。还有哪些方法可以存储在线用户数据?
【问题讨论】:
-
内存泄漏是什么意思?您正在获得最大堆大小吗?您是否正在使用工具或方法来检测正在发生的内存泄漏?
-
@lukaswilkeer 我的 cpu 使用率上升到 100%,然后我无法连接到站点,直到我重新启动它,日志中没有错误。
-
您需要进行更有针对性的调试才能知道此特定代码导致内存泄漏。 CPU 使用率上升到 100% 可能是很多事情。诊断可能的内存泄漏的常用方法是使用堆快照。
标签: node.js memory memory-leaks