Axi*_*ili 3 memory windows configuration node.js npm
我需要在Windowsnpm install 10上的 NodeJS 14 上以 8GB 内存限制运行(具有 16GB RAM)。
我已尝试以下方法但无济于事:
node --max-old-space-size=8192 "C:\Program Files\nodejs\npm" install- 出现意外行为,但使用+ C后似乎仍为 4GBCTRL
set NODE_OPTIONS=--max-old-space-size=8192&&npm install- 仍然是4GB
添加 NODE_OPTIONS 环境变量(同时添加到用户变量和系统变量)- 仍然是 4GB
相关问题:
到目前为止,您还没有显示任何故障排除结果,这让我相信问题是由“HEAP's MAX_SIZEEnv Variable”引起的,也没有显示任何证据表明该变量没有被分配您尝试分配给它的值。我并不是说问题不是由 env 变量引起的。但是,我想说的是,需要进行更多的故障排除才能确定问题的根本原因是什么。
就我个人而言,从您迄今为止向社区展示的内容来看,我认为问题是由于堆以外的位置内存不足造成的,如果您使用装有Windows 10的典型 PC ,则可能是您的计算机没有\没有足够的内存,不是时期,但此刻您尝试进行下载。
\n在我的机器上我有:
\n我的操作系统
\n我使用 Linux,但我免费获得 Windows,因为对我来说购买新 PC 并升级它比单独购买部件更便宜。我从来没有启动到 Windows,所以它总是作为未受影响的全新安装。
\n目前我刚刚升级到 Fedora Workstation 36。
\n测试
\n我使用在其他线程上实现子进程的节点程序以及打开最多 70 个选项卡的 Firefox 浏览器运行性能测试,我会尝试一次刷新所有选项卡。
\n结果令人震惊。
\n我不会详细介绍,但要注意的重要一点是我有16GB DDR4 RAM
\n当 Windows 需要 15+GB 内存时,Linux 只会使用大约 10GB+。涨幅为 37.5% - 42.5%。
\n但是,我有 Windows PRO,这允许我禁用大部分遥测功能,并且我发现如果禁用 Windows 遥测功能和其他一些功能,Windows 的性能会更高。当 Windows 使用 15+ Linux 时,内存将达到 12+ GB,但这仍然会增加 25-20% 左右的内存。
\n不过需要注意的一件重要的事情是,有时 Linux 会死机,当我系统超载时,Windows 的恢复能力更强,但让 Windows 陷入瘫痪所需的时间要少得多。
\n...你只使用了 8GB,现在已经不多了。
\n2BH 我觉得我的16GB太少了,我打算尽快升级。
\n排除故障时,您需要始终检查语法和语义是否正确,这样您就可以排除问题不是由于您犯下的愚蠢拼写错误造成的。
\n\n\n“我知道你的想法……”
\n“这不是打字错误!” ,
\n
但事实证明存在一个拼写错误:您作为问题的一部分添加的代码片段使用Node Command-line Flag语法,作为Node Environment Variable 的语法,这是不正确的,因为它们使用不同的字符集。乍一看,它们看起来相同,但如果您查看我在下面创建的由两部分组成的 MD 表,您会发现两者之间实际上存在相当大的差异
\n| \xc2\xa0 \xc2\xa0 \xc2\xa0 \xc2\xa0 \xc2\xa0 \xc2\xa0 \xc2\xa0 语义 | \xc2\xa0 \xc2\xa0 \xc2\xa0 \xc2\xa0 \xc2\xa0 \xc2\xa0 \xc2\xa0 \xc2\xa0 \xc2\xa0 \xc2\xa0 \xc2\xa0 \xc2\xa0 \xc2\xa0 \xc2 \xa0语法 | \xc2\xa0 \xc2\xa0 \xc2\xa0 \xc2\xa0 \xc2\xa0 \xc2\xa0 \xc2\xa0 \xc2\xa0差异 |
|---|---|---|
| 命令行标志 | "--max-old-space-size" | 破折号 |
| 环境变量 | "--max_old_space_size" | 下划线 |
\n\n“如果您使用了正确的语法,但仍然遇到问题,您可以检查堆的最大大小实际上是否已配置为您分配给它的大小值。记录配置的V8 Max的过程控制台中的堆大小可以通过完成以下步骤来确定。”
\n
开始:在可以使用节点命令 \xe2\x80\x94 运行该文件的环境中创建一个完全空的 JavaScript 文件,并将文件命名为test.js。
\n将以下代码添加到test.js,并且不要添加任何其他内容。
\n/** \n * @file "./test.js" \n * @desc "PRINTS: The upper memory limit for V8s HEAP" \n * */\n\nconst maxHeapSz = require(\'v8\').getHeapStatistics().heap_size_limit;\nconst maxHeapSz_GB = (maxHeapSz / 1024 ** 3).toFixed(1);\n\nconsole.log(\'--------------------------\');\nconsole.log(`${maxHeapSz_GB}GB`);\n\nRun Code Online (Sandbox Code Playgroud)\n\n~/$ node --max-old-space-size=8192 test.js; node --max-old-space-size=4096 test.js; node --max-old-space-size=2048 test.js; node --max-old-space-size=1024 test.js; node --max-old-space-size=512 test.js\n\nRun Code Online (Sandbox Code Playgroud)\n\n如果您生成的结果与图像中的编辑器(我的编辑器)生成的结果不同,那将是非常奇怪的,原因如下:
\n上面的命令配置“Max_Old_Space”环境变量。我要求您“复制并粘贴”到文件“test.js”中的程序会打印命令环境配置更改的结果。它表明,每次将 Env Var 设置为不同的值时,“运行时”期间的 Env Var 都会不同。需要注意的是,它是一个变量,一个“环境变量”,它实际上并没有改变堆的大小,它代表的值只是说:
\n\n\n_“我开发人员批准堆增长到环境变量中设置的大小:“MAX_OLD_SPACE_SIZE”
\n
...这并不立即意味着节点能够完成这样的大小,如果你愿意,你可以将其设置为 10e1000 MB,并且它很可能会接受该数字作为有效配置。我测试了各种不同的东西,毫无疑问,你可以将其设置为比你实际拥有的内存数量多数百倍。换句话说,它是一个变量(即内存中保存二进制值的位置的地址),设置它不应该有任何问题。更有可能的是,您的机器无法分配所需的空间量,8GB RAM,当您只有 16GB 时,对于某些系统来说,可以为单个进程提供大量空间,尤其是在运行 Windows 的情况下,或 MacOS。Linux 在资源密集型情况下是王者。
\n\n\n“根据您上传到问题中的图像,我假设您使用的是 Windows,因此,我将继续仅针对 Windows 回答此问题。如果您需要其他平台的帮助,请通过编辑您的问题来告知我。”
\n
\n\n“如果此时这个问题仍然没有解决,我将需要您提供更多信息,例如您收到的错误消息。还有对实际发生的情况的更深入的解释,例如,进一步更深入的解释关于下面的声明将非常有帮助。以及提供上面要求的屏幕截图“
\n
\n\nCTRL“意外行为,但点击+后似乎仍然是 4GB C”
\n
| 归档时间: |
|
| 查看次数: |
20471 次 |
| 最近记录: |