Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript-持久内存泄漏_Javascript_Typescript_Memory - Fatal编程技术网

JavaScript-持久内存泄漏

JavaScript-持久内存泄漏,javascript,typescript,memory,Javascript,Typescript,Memory,我的TypeScript应用程序3PG一直存在内存泄漏。内存管理似乎有缺陷 两个应用程序: 2PG->[没有内存泄漏] 3PG->正在讨论的应用程序,[2PG的扩展,设置了间隔等] 这是一类使用大量间隔的3PG,可能是原因之一: 我想知道这段代码是否是问题所在,如果是的话,我在JavaScript中做什么或者应该避免做什么会增加内存使用率。谢谢 更新:该问题是由于discord.js多次调用ready事件导致内存累积。这也是我的错误,没有提供足够的信息来帮助准确回答问题。问题可能是所有这些set

我的TypeScript应用程序3PG一直存在内存泄漏。内存管理似乎有缺陷

两个应用程序:

2PG->[没有内存泄漏] 3PG->正在讨论的应用程序,[2PG的扩展,设置了间隔等] 这是一类使用大量间隔的3PG,可能是原因之一:

我想知道这段代码是否是问题所在,如果是的话,我在JavaScript中做什么或者应该避免做什么会增加内存使用率。谢谢


更新:该问题是由于discord.js多次调用ready事件导致内存累积。这也是我的错误,没有提供足够的信息来帮助准确回答问题。

问题可能是所有这些setInterval调用都将设置新的执行。你需要做两件事

对于已完成其工作且不再需要的任何对象。保留对interval对象的引用,并在组件不再使用时清除它们 如果不确切知道代码背后的业务,请考虑StimeTimeUT是否更适合这个任务。
他们已经在存储interval id task.timeout=setInterval任务完成后,你怎么知道他们没有清除它呢。。。内存泄漏。。。检查中的代码没有参考清除间隔。。。我不知道,我在猜测,我想我可能是对的。更不用说他们将其存储在任务的字段中,我认为这不能从他们代码的其他部分引用,因为它在同一个函数中初始化。如果我们在做猜测游戏,那么我打赌findTask返回相同的对象,所以存储在任务上是完全合理的,但我们不是在玩猜测游戏,所以我投票决定结束这个问题,因为我们没有足够的信息来回答它。我们总是在玩猜谜游戏,除非有人提供所有相关的代码部分。。。一个合适的开发人员甚至会在遇到以前从未遇到过的新问题时,对自己的项目进行猜测。你知道试错是从猜测开始的吧?不管怎么说,你投票结束的结果非常好,因为这个问题不是按照规则形成的。我在这里做了一个猜测,可能会有帮助,可能不会,但总比他没有任何反馈要好
private schedule(uuid: string, savedGuild: GuildDocument, interval: number) {
        const task = this.findTask(uuid, savedGuild.id);
        if (!task.timer) return;
 
        task.status = 'ACTIVE';
        task.timeout = setInterval(
            async() => await this.sendTimer(task, savedGuild), interval);
}