javascript 为什么process.memoryUsage().heapUsed的值总是增加?

4ioopgfo  于 2023-06-28  发布在  Java
关注(0)|答案(1)|浏览(103)

我一直试图写一个代码,我可以看到堆不应该增加时,设置超时和删除下一次。但无论如何,堆使用量都在不断增加。

let process = require('process');

console.log('initial', process.memoryUsage().heapUsed);

let timeout;
function happen() {
  
  console.log('process', process.memoryUsage().heapUsed);
  
  clearTimeout(timeout);             // Clear previous timeout
  timeout = setTimeout(happen, 500); // Set next timeout
  
}
happen();
hk8txs48

hk8txs481#

heapUsed的值由于不断调用happen函数而增加,该函数创建了一个Object来存储process.memoryUsage()的结果,并创建了一个Timeout来存储setTimeout(...)的结果。
这些被创建的值 * 会在堆 * 中无限期地保留(直到垃圾收集器将其删除)。This article有更多关于JavaScript垃圾收集的信息。

相关问题