在启动时,似乎我的node.js应用程序使用大约200MB的内存.如果我暂时不管它,它会缩小到9MB左右.
是否可以从应用程序内:
我问的原因是,我从磁盘加载了一些临时处理的文件.这可能会导致内存使用量激增.但是我不希望在GC运行之前加载更多文件,否则存在内存不足的风险.
有什么建议 ?
我一直在努力克服运行此处描述的笑话时明显的内存泄漏: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 有什么想法吗?
我一直想知道,为什么Java要求你手动设置堆大小?我的印象是,需要为程序运行,直到OS可以分配没有更多的其他语言编写的程序仅分配尽可能多的内存下.
在Java世界中,我们需要设置堆,堆栈和permgen大小.虽然这是很简单的忘记增加这些以"足够大"的数字是排名第一的原因,我已经看到了服务器宕机.
为什么不能告诉Java随着时间的推移增加堆/ stack/permgen?
Node.js 我知道有两个控制内存分配的参数:
--max_new_space_size 和 --max_old_space_size
具体到底是什么NEW SPACE和OLD SPACE事情?
节点: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) 将我的 Angular 10 升级到 Angular 13 后,使用命令后出现此错误ng serve。
\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}\nRun Code Online (Sandbox Code Playgroud)\n已经尝试增加 Node 的内存限制并安装最新版本的 Node。
\n我的节点版本是 v14.18.1,我的 npm 版本是 6.14.15。\nAngular 12 或 11 不会出现此问题。
\n我正在使用具有 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但它没有解决任何问题。
大家有什么建议吗?
我正在使用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 应用程序可以使用的最大大小是多少?如何通过内存使用来设置它?
谢谢。
node.js ×5
javascript ×2
v8 ×2
amazon-ec2 ×1
angular ×1
angular13 ×1
build ×1
heap-memory ×1
java ×1
jestjs ×1
jvm ×1
memory ×1
memory-leaks ×1
typescript ×1