为什么在给定数量较大的情况下,数组填充程序会在给定的迭代次数时崩溃-但在给定数量较小的情况下会超过该迭代次数

问题描述

我今天试图复制一个与行数或数据集大小有关的错误(不是很重要)-在尝试复制此错误时,我在数组中填充了很多对象,计划要用小对象填充大型数组,直到达到内存限制为止。

22369000 2425.549415588379

<--- Last few GCs --->

[1130801:0x3a01e80]     1137 ms: Scavenge 32.9 (43.8) -> 29.8 (62.8) MB,8.4 / 0.0 ms  allocation failure 
[1130801:0x3a01e80]     1199 ms: Mark-sweep 40.9 (71.8) -> 34.0 (71.0) MB,5.6 / 0.0 ms  (+ 30.0 ms in 88 steps since start of marking,biggest step 3.8 ms,walltime since start of marking 334 ms) finalize incremental marking via stack guard GC in old spa[1130801:0x3a01e80]     7327 ms: Scavenge 1207.5 (1235.0) -> 1195.9 (1237.0) MB,25.4 / 0.0 ms  allocation failure 


<--- JS stacktrace --->

如果我输入大量数字,例如323690000,它将死于以下结果:

32369000 > 22369000

真正奇怪的是,如果我输入较小的数字(例如32369000),它将很高兴地生成所有这些信息-即使--max_old_space_size=8192-值得注意的是,我还差一点没内存,当我使用_.times运行程序时。看起来返回值有多大也没关系(我尝试定义20列)-如果传入的值很大,它总是在22369000标记附近消失,如果给它较小的值,它就会高兴地走得更远

这让我认为_.times的工作方式存在一些怪异的错误(我应该换成Array.fill或类似的东西)。我查看了const someAction = createAsyncThunk( 'my/someAction',async () => {...} ) const someAction2 = createAsyncThunk( 'my/someAction2',async () => {...} ) const generatedThunk = createAsyncThunk( 'my/thunk',async (arg,thunkApi) => { thunkApi.dispatch(someAction()); thunkApi.dispatch(someAction2()); } ) 的实现,它似乎并没有做任何特别无效的事情(它在开始时生成一个空数组,然后填充它)。我没想到会导致这种情况。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)