我是在节点js中设计服务器的新手
我知道节点js在一个进程中运行,
我的怀疑是
1)函数的局部变量的内存状态是否在执行后存储 - 例如:函数可能会启动一些异步方法,即使在函数执行后,回调函数也会使用这些变量。
所以假设以上是真的
2)每次调用(服务器url)时,其回调都会被请求,响应变量调用。因此内存状态必须连续增加(因为每个url调用的内存状态都是存储的,即因为变量的状态在回调onRequest(请求,响应)被存储)因此它应该在某些时间点由于内存不足而崩溃。这会发生吗?
答案 0 :(得分:2)
函数的局部变量的内存状态是否在执行后存储
是。这称为closure。只要您的回调处于活动状态,其范围内的变量就可用。
每次调用(服务器url)时,都会使用请求,响应变量调用其回调。因此内存状态必须持续增加,因此在某些时间点由于内存不足而崩溃。
没有。当所有工作完成后,并且没有未完成的(异步)回调确实引用您的变量,它们将是garbage collected。
这会发生吗?
是的,您可以编写导致内存泄漏的错误代码。