我一直试图写一个代码,我可以看到堆不应该增加时,设置超时和删除下一次。但无论如何,堆使用量都在不断增加。
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();
1条答案
按热度按时间hk8txs481#
heapUsed
的值由于不断调用happen
函数而增加,该函数创建了一个Object
来存储process.memoryUsage()
的结果,并创建了一个Timeout
来存储setTimeout(...)
的结果。这些被创建的值 * 会在堆 * 中无限期地保留(直到垃圾收集器将其删除)。This article有更多关于JavaScript垃圾收集的信息。