APP下载

关于Node的内存泄漏简析

2017-12-14邵晨龙江雪

中国科技博览 2017年46期
关键词:进程解决方案

邵晨龙++江雪

[摘 要]Node对内存泄漏十分敏感,一旦线上应用有成千上万的流量,哪怕是一个字节的内存泄漏也会造成堆积,垃圾回收过程中将耗费更多时间进行对象扫描,应用响应缓慢,直到进程内存溢出,应用崩溃。本文不仅分析了造成内存泄漏的原因,并介绍了几种主流的排查方案。

[关键词]Node 内存泄漏

中图分类号:TG294 文献标识码:A 文章编号:1009-914X(2017)46-0046-01

1 引言

内存泄漏通常产生于无意间,较难排查。尽管内存泄漏的情况不尽相同,但其实质只有一个,那就是应当回收的对象出现意外而没有被回收,变成了常驻在老生代中的对象。

2 引发内存泄漏的原因

通常,造成内存泄漏的原因主要有两个:缓存,队列消费不及时。

2.1 缓存

缓存在应用中的作用举足轻重,可以十分有效地节省资源。因为它的访问效率要比I/O的效率高,一旦命中缓存,就可以节省一次I/O的时间。

但是在Node中,缓存并非物美价廉。一旦一个对象被当作缓存来使用,那就意味着它将会常驻在老生代中。缓存中存储的键越多,长期存活的对象也就越多,这将导致垃圾回收在进行扫描和整理时,对这些对象做无用功。

另一个问题在于,JavaScript开发者通常喜欢用对象的键值对来缓存东西,但这与严格意义上的缓存又有着区别,严格意义的缓存有着完善的过期策略,而普通对象的键值对并没有。所以,在Node中,任何试图拿内存当缓存的行为都应当被限制。当然,这种限制并不是不允许使用的意思,而是要小心为之。……

登录APP查看全文

猜你喜欢

进程解决方案
艾默生自动化解决方案
解决方案和折中方案
债券市场对外开放的进程与展望
4G LTE室内覆盖解决方案探讨
7大睡眠问题解决方案
Moxa 802.11n WLAN解决方案AWK-1131A系列
我国高等教育改革进程与反思
Linux僵死进程的产生与避免
男女平等进程中出现的新矛盾和新问题
俄罗斯现代化进程的阻碍