为什么分配Int8Array时Node有时会挂起?

考虑以下两个程序:

// works.js var buffer = new ArrayBuffer(16777216); var HEAP8 = new Int8Array(buffer); 

 // fails.js var HEAP8; var buffer = new ArrayBuffer(16777216); HEAP8 = new Int8Array(buffer); 

运行node然后input.load works.js 。 一切似乎都快乐。 现在退出node

再次运行node并input.load fails.js

在我的机器上加载fails.js交互式地导致node进程消耗超过1GB的RAM和100%的CPU,并且最后的语句永远阻塞了解释器。 works.js只是运行并按预期返回。

有什么不同的理由吗? 或者我应该写一个错误报告?

奇怪的是,直接从命令行运行任何脚本工作正常:

 node works.js # exits normally node fails.js # exits normally 

更新 :我在OS X 10.9.5上使用节点0.12.0

有什么不同的理由吗? 或者我应该写一个错误报告?

我怀疑这是有一个很好的理由,你应该提交一个错误 。