日期:2014-05-16  浏览次数:20410 次

关于nodejs 插件 jsdom内存泄漏,应该注意的问题

?

在我开发的网站 [爱比物价跟踪]http://www.etao3c.com时,使用nodejs用于数据抓取,其中用到的解析页面的插件有jsdom, jquery, 刚开始数据量不是很大的时候,抓取没有遇到任何的问题,后来,需要抓取的页面很多(万级别以上),程序就开始包内存溢出,?

之后,去google找答案,说是jquery的问题,没有办法我就把jquery去掉了,但是跑了一会,发现还是报统一的错误,最后发现是jsdom的问题,

就是说在使用完dom的时候,没有回收相应的垃圾信息,所以需要,我们自己在调用jsdom.evn使用完dom后,调用一下window.close,只要gc就可以收集垃圾内存

?

大家可以在执行node 加入--trace_gc 看 一下内存清空,就一目了然

?

1 楼 by5739 2012-04-21  
请问你做这个的时候jquery和jsdom的版本是多少?我现在用最新版本,2个都报错,运行不了
2 楼 liangyuliang0335 2012-04-23  
by5739 写道
请问你做这个的时候jquery和jsdom的版本是多少?我现在用最新版本,2个都报错,运行不了


这个和版本没有什么关系,只是你要记住在是jsdom的时候,要手动window.close,这样就可以释放内存了

http://cnodejs.org/topic/4f7102de8a04d82a3d1c1edb 你可以看一下这个
3 楼 by5739 2012-04-24  
liangyuliang0335 写道
by5739 写道
请问你做这个的时候jquery和jsdom的版本是多少?我现在用最新版本,2个都报错,运行不了


这个和版本没有什么关系,只是你要记住在是jsdom的时候,要手动window.close,这样就可以释放内存了

http://cnodejs.org/topic/4f7102de8a04d82a3d1c1edb 你可以看一下这个

谢谢哈...我这边还是跑不起来..代码里面报错..我换了一个叫select的module去解析页面了..