使用NodeJS開發的應用,如果需要處理大量數據,可能導致堆溢出。錯誤提示中,會有“JAVAScript heap out of memory”,如下圖:
![]()
通過調試分析,會發現:在出錯之前,其使用的內存量是一直增大的:
如本例測試時,起初:
![]()
中途,內存用量一直增長:
![]()
當內存使用量超過約2048MB后,即會出錯。
![]()
這個問題的原因,是由于NodeJS在啟用時,默認使用的內存量是受限的,大約是2GB。
![]()
在代碼中,通過v8的getHeapStatistics方法,可以取得此值。
![]()
如果想要獲得更大的內存,則需解除此封印。方法是:在Node啟動程序時,使用max-old-space-size參數,設定一個更大的值。
如,設定可用內存是8GB:
![]()
本測試,使用的是用于JS代碼加密的JShaman平臺本地版。未設定內存值之前 ,在加密某個大型JS文件時,會出現本文最前面的錯誤。在設定為8GB內存用量后,則運行正常。效果如下圖:
![]()
本方法,在node12下測試通過:
![]()






