Skip to content
This repository has been archived by the owner on Oct 23, 2019. It is now read-only.

eachLimit 21万个元素的数组,经常到几万的时候就停止了 #28

Closed
dbit-xia opened this issue Feb 5, 2017 · 11 comments
Closed

Comments

@dbit-xia
Copy link
Contributor

dbit-xia commented Feb 5, 2017

eachLimit 21万个元素的数组,经常到几万的时候就停止了,亲们有遇到过吗?

@dbit-xia
Copy link
Contributor Author

dbit-xia commented Feb 5, 2017

程序运行正常,只是eachLimit的iterator不继续执行了

@zensh
Copy link
Collaborator

zensh commented Feb 5, 2017

写了个简单的测试,node.js v6 下跑并没有问题

'use strict'
/* global console */

const Thenjs = require('then.js')

const list = []

console.time('create list')
for (let i = 0; i < 200000; i++) {
  list[i] = i
}
console.timeEnd('create list')

Thenjs.eachLimit(list, function (cont, value) {
  if (value % 1000 === 0) console.log(value)
  setTimeout(() => cont(null, value * 2), 0)
}, 100)
.then(function (cont, result) {
  console.log('End:', result)
})

@zensh
Copy link
Collaborator

zensh commented Feb 5, 2017

建议监控一下内容占用,是不是逻辑问题导致了频繁 GC 之类

@dbit-xia
Copy link
Contributor Author

dbit-xia commented Feb 7, 2017

我是v6.9.1 demo运行没有问题
我也怀疑是内存占用, 监控内存占用是会一点点的增多,但也都在200M的以内 , @zensh 有什么办法可以看出频繁GC (我认为出了作用域就自动GC了)

@dbit-xia
Copy link
Contributor Author

dbit-xia commented Feb 7, 2017

发现一个情况就是这个demo在运行过程中内存占用也会越来越多,是有什么引用导致内存无法及时释放吗?

@zensh
Copy link
Collaborator

zensh commented Feb 7, 2017

eachLimit 全部完成才会释放数组啊,你说的“运行过程中内存占用也会越来越多”是什么情况

@Saviio
Copy link

Saviio commented Feb 7, 2017

并不是一出scope就立刻/马上GC的,只是被tag成'unneccessary',然后等STW的时候一起回收掉。

@nekolab
Copy link
Collaborator

nekolab commented Feb 7, 2017

带上--expose-gc参数启动node可以暴露global.gc()方法,如果怀疑是内存问题可以显式调用这个方法进行排查

@zensh
Copy link
Collaborator

zensh commented Feb 7, 2017

参考 tj/co#180 监测内存占用

@zensh zensh closed this as completed Feb 7, 2017
@zensh
Copy link
Collaborator

zensh commented Feb 8, 2017

释放是被动的

@dbit-xia
Copy link
Contributor Author

dbit-xia commented Feb 8, 2017

谢谢大家,我再继续观察一下

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants