Node打包堆栈溢出?慌什么!淡定!

Node打包堆栈溢出?慌什么!淡定!

九月 16, 2021 本文共计: 555 字 预计阅读时长: 2分钟

今天是周五,可是为什么我却一点也感受不到周五的快乐呢?可能是明天需要再补班的缘故吧!hhhhh

问题不大,牢骚话暂时略过,今天主要记录下工作上碰到的问题,以及我是怎么解决的。

起因

我还是像往常一样,帮同事在jekins上构建代码,我在等待着我的机器人通知我,构建完成的消息,等了10分钟、20分钟…..,终于,耐不住一看界面,打包失败!

我直呼一个好家伙!立马clone项目,本地打包,本地打包是ok的。

然后询问同事,是不是加了新代码:”确实是引入了一个新的包”。

打开了analyze分析工具一看:3.5M未压缩,够大!

经过

好奇的我,打开了jekins构建日志:

<--- Last few GCs --->

[103099:0x310aab0]   392901 ms: Scavenge 1343.8 (1424.1) -> 1342.9 (1424.6) MB, 16.4 / 0.0 ms  (average mu = 0.117, current mu = 0.025) allocation failure 
[103099:0x310aab0]   394779 ms: Mark-sweep 1344.0 (1424.6) -> 1343.1 (1424.1) MB, 1853.9 / 0.0 ms  (average mu = 0.078, current mu = 0.037) allocation failure scavenge might not succeed


<--- JS stacktrace --->

==== JS stack trace =========================================

哟嚯,GC内存不够了,怎么解决呢?

当然是上google咯!

可以是:直接执行

也可以是:设置系统的环境变量

也可以是:设置执行时环境变量

stackoverflow回答地址 : https://stackoverflow.com/questions/38558989/node-js-heap-out-of-memory

结果

最终,当然是生效啦,但是你以为这就结束了吗?

NoNoNo,才刚开始!

为什么会内存不够呢?

我打开了v8查询那个设置参数:

其实这个搜索关键字也是观察jekins日志发现的:

哟嚯,是不是,惊人的相似,请把可能二字去掉。

然后,我们去命令行看下这个鬼东西:

然后注意下箭头标注的,然后计算下最终的内存大小,以G为单位:

再回过头来看下,Node官文中的说明:

老的Node版本,基本在1.5~1.7G左右,一旦打包时候的空闲内存少了,就会这样。


到此为止,这个问题的已经被小王拔起了,期待下次分享~