相关疑难解决方法(0)

如何请求node.js中的垃圾收集器运行?

在启动时,似乎我的node.js应用程序使用大约200MB的内存.如果我暂时不管它,它会缩小到9MB左右.

是否可以从应用程序内:

  1. 检查应用程序使用的内存量?
  2. 请求垃圾收集器运行?

我问的原因是,我从磁盘加载了一些临时处理的文件.这可能会导致内存使用量激增.但是我不希望在GC运行之前加载更多文件,否则存在内存不足的风险.

有什么建议 ?

javascript garbage-collection node.js

57
推荐指数
3
解决办法
3万
查看次数

Jest 似乎不受节点 --max-old-space-size 选项的影响

我一直在努力克服运行此处描述的笑话时明显的内存泄漏:https://github.com/facebook/jest/issues/7874

我想给 jest 一大堆堆空间,以便我的测试能够在泄漏的情况下完成。但是,使用此命令行:

node --max-old-space-size=8192 --expose-gc ./node_modules/.bin/jest --no-cache --runInBand --logHeapUsage
Run Code Online (Sandbox Code Playgroud)

当堆使用量约为 1500MB 时,我仍然遇到“Javascript 堆内存不足”的情况。如果我运行:

节点 --max-old-space-size=8192

然后执行以下操作:

> v8.getHeapStatistics()
{
   ...
   heap_size_limit: 8640266240
   ...
}
Run Code Online (Sandbox Code Playgroud)

很明显我可以影响节点的堆大小。但不知怎的,这并没有影响笑话。

节点:16.13.0 笑话:27.4.4 有什么想法吗?

memory-leaks heap-memory node.js jestjs

20
推荐指数
1
解决办法
3433
查看次数

为什么需要指定Java堆大小?

我一直想知道,为什么Java要求你手动设置堆大小?我的印象是,需要为程序运行,直到OS可以分配没有更多的其他语言编写的程序仅分配尽可能多的内存下.

在Java世界中,我们需要设置堆,堆栈和permgen大小.虽然这是很简单的忘记增加这些以"足够大"的数字是排名第一的原因,我已经看到了服务器宕机.

为什么不能告诉Java随着时间的推移增加堆/ stack/permgen?

java jvm jvm-arguments

18
推荐指数
2
解决办法
1223
查看次数

什么是v8旧空间和新空间?

Node.js 我知道有两个控制内存分配的参数:

--max_new_space_size--max_old_space_size

具体到底是什么NEW SPACEOLD SPACE事情?

v8

14
推荐指数
1
解决办法
3086
查看次数

当不使用“--max-old-space-size”标志时,可用内存的默认值是多少?

节点:12.16.2

尝试找出为什么在具有内存限制的 docker 容器中运行的节点应用程序会因on512mb而失败,并且如果将限制增加到大约则会失败。看起来只有 50% 的空间分配给了老一代对象,但我找不到任何有关此行为的文档。JavaScript heap out of memory256mb1500mb700mb

将旧空间大小设置为总可用内存的 70% 左右是否正确(剩余空间足以容纳其他 v8 内存部分)?

错误日志

<--- Last few GCs --->

[1:0x565508ac6740]    26332 ms: Mark-sweep 255.3 (257.9) -> 254.3 (257.3) MB, 85.7 / 0.0 ms  (+ 65.2 ms in 24 steps since start of marking, biggest step 6.6 ms, walltime since start of marking 162 ms) (average mu = 0.239, current mu = 0.259) allocation fa[1:0x565508ac6740]    26447 ms: Mark-sweep 255.6 (258.1) -> 253.6 (256.3) …
Run Code Online (Sandbox Code Playgroud)

memory v8 node.js

12
推荐指数
2
解决办法
9990
查看次数

Worker 由于达到内存限制而终止:JS 堆内存不足

将我的 Angular 10 升级到 Angular 13 后,使用命令后出现此错误ng serve

\n
\xe2\xa0\xa7 Generating browser application bundles (phase: building)...events.js:377\n      throw er; // Unhandled 'error' event\n      ^\n\nError [ERR_WORKER_OUT_OF_MEMORY]: Worker terminated due to reaching memory limit: JS heap out of memory\n    at new NodeError (internal/errors.js:322:7)\n    at Worker.[kOnExit] (internal/worker.js:276:26)\n    at Worker.<computed>.onexit (internal/worker.js:203:20)\nEmitted 'error' event on Worker instance at:\n    at Worker.[kOnExit] (internal/worker.js:276:12)\n    at Worker.<computed>.onexit (internal/worker.js:203:20) {\n  code: 'ERR_WORKER_OUT_OF_MEMORY'\n}\n
Run Code Online (Sandbox Code Playgroud)\n

已经尝试增加 Node 的内存限制并安装最新版本的 Node。

\n

我的节点版本是 v14.18.1,我的 npm 版本是 6.14.15。\nAngular 12 或 11 不会出现此问题。

\n

angular angular13

10
推荐指数
1
解决办法
1万
查看次数

AWS EC2 上的 JavaScript 堆内存不足

我正在使用具有 t2.micro 类型的 AWS EC2 实例,并且尝试使用命令构建使用 typescript 的 REST API,tsc但遇到内存问题。

Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory

我尝试使用--max_old_space_size-1024但它没有解决任何问题。

  • NodeJS:v14.9.0
  • NPM:v6.14.8

大家有什么建议吗?

build amazon-ec2 node.js typescript

8
推荐指数
1
解决办法
9661
查看次数

如何为使用内存使用包运行的 Nodejs 设置 pass max-old-space-size 内存限制

我正在使用https://www.npmjs.com/package/memory-usage通过在 MACOS 终端中运行“memory-usage app.js”来查看我的 Node 应用程序如何使用内存。然而,经过一些测试,它总是在 1.4GB 时崩溃。

在普通的nodejs命令中,要将内存限制设置得更高,我可以使用“node --max-old-space-size=8192 app.js”。但是,运行“memory-usage --max-old-space-size=8192 app.js”将不起作用。

我的 Mac 有以下 RAM 详细信息:

组 0/DIMM0:

大小:4 GB 类型:DDR3 速度:1867 MHz

组 1/DIMM0:

大小:4 GB 类型:DDR3 速度:1867 MHz

我的 Nodejs 应用程序可以使用的最大大小是多少?如何通过内存使用来设置它?

谢谢。

javascript node.js

6
推荐指数
1
解决办法
2万
查看次数