尽管Node.js是一个相当热门的话题,但我碰巧发现由于其垃圾收集模型(http://amix.dk/blog/post)报告Node.js可能不适合实时应用程序。 / 19577)。并且,一些基准测试显示,与RingoJS相比,Node.js响应缓慢(http://hns.github.com/2010/09/29/benchmark2.html)。
目前,Node.js绑定到V8 JavaScript引擎,该引擎使用世代停止世界的GC。
那么,当传入的请求很大时,Node.js会被破坏吗? 如果有真实的生产统计数据,那就更好了。
由于
答案 0 :(得分:2)
垃圾收集的成本取决于堆中对象的数量,尤其是长寿命对象的数量。您拥有的越多,在GC中花费的时间就越多。
是的,如果堆很大,V8目前可能会暂停一些相当大的GC暂停。听起来V8团队正致力于通过扩展工作来最大限度地降低每个GC暂停的成本。您可以通过--trace-gc
启动GC来查看自己节点程序中的GC成本。
对于许多应用程序,GC的成本被越来越优秀的优化编译器所抵消。我建议尝试一个简单的程序,测量V8报告的GC成本,以及测量客户端到客户端的延迟。当客户通过开放的互联网连接时,我发现GC成本几乎完全可以忽略。