代码之家  ›  专栏  ›  技术社区  ›  ooyen

npm几乎每次都会运行“JavaScript堆内存不足”

  •  2
  • ooyen  · 技术社区  · 6 年前

    我在运行npm时遇到问题 FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory . 因为我安装了node。js(&A);npm在我的新电脑上它不工作。

    唯一有效的npm命令是 npm -v 其他内存不足。

    系统信息:

    • Win10(64位;16GB Ram(通常约6GB可用Ram);i7-7820HQ)
    • 节点-v=>v7.4.0
    • npm-v=>4.1.2
    • $指向/c/NodeJS/(node.js根文件夹)的路径

    我尝试的内容:

    • 重新安装节点。js(&A);多个版本中的npm(所有版本都得到了几乎相同的异常)
    • 选中的 ~/.npm & ~/npm_cache (两者都不存在)
    • 通过运行npm node --max_old_space_size=8000 /usr/bin/npm [command] 但会导致不同的异常(异常“Z”)( https://stackoverflow.com/a/40939496 )

    我想知道的是:

    • Ram提高到约1.4-1.5 GB Ram,CPU使用率约为40%
    • 然后CPU使用率下降到约12-17%(我认为是GCs)
    • 在此之前,gitbash/cmd中没有单独的日志/异常输出,即使使用-ddd(verbose)
    • 在Strg+C中断和annother 2分钟后,出现以下异常

    例外情况:

    $ npm help -ddd
    
    <--- Last few GCs --->
    
    [17172:000001E0EEED86A0]   423428 ms: Mark-sweep 1485.5 (1522.0) -> 1485.5 (1522.0) MB, 2817.0 / 0.0 ms  allocation failure GC in old space requested
    [17172:000001E0EEED86A0]   426164 ms: Mark-sweep 1485.5 (1522.0) -> 1485.5 (1516.0) MB, 2735.9 / 0.0 ms  last resort gc
    [17172:000001E0EEED86A0]   429133 ms: Mark-sweep 1485.5 (1516.0) -> 1485.5 (1516.0) MB, 2969.9 / 0.0 ms  last resort gc
    
    
    <--- JS stacktrace --->
    
    ==== JS stack trace =========================================
    
    Security context: 000003092D4C0D59 <JS Object>
        2: listener [C:\NodeJS\v5\node_modules\npm\node_modules\npmlog\node_modules\gauge\node_modules\signal-exit\index.js:88] [pc=0000031922938DD5](this=000002CCA2196281 <a process with map 000001E744610B71>)
        3: emitNone(aka emitNone) [events.js:86] [pc=0000031922938B31](this=000003092D404311 <undefined>,handler=0000031F86B79379 <JS Function listener (SharedFunctionInfo 0000031F86B79029)>,i...
    
    FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory
    

    JS堆栈跟踪有时似乎有所不同,例如:

    ==== JS stack trace =========================================
    
    Security context: 0000031DFB2C0D59 <JS Object>
        2: emitNone(aka emitNone) [events.js:86] [pc=000002993916DA71](this=0000031DFB204311 <undefined>,handler=00000360FFC77F41 <JS Function listener (SharedFunctionInfo 00000360FFC77BF1)>,isFn=0000031DFB2043B1 <true>,self=000002EEFFA95499 <a process with map 000000CA9BF10B71>)
        3: emit [events.js:185] [pc=000002993916D5CA](this=000002EEFFA95499 <a process with map 000000CA9BF10B71>,type=000...
    

    运行异常“Z” node --max_old_space_size=4000 /c/NodeJS/npm help

    C:\NodeJS\v5\npm:4
    case `uname` in
    ^^^^
    SyntaxError: Unexpected token case
        at Object.exports.runInThisContext (vm.js:78:16)
        at Module._compile (module.js:543:28)
        at Object.Module._extensions..js (module.js:580:10)
        at Module.load (module.js:488:32)
        at tryModuleLoad (module.js:447:12)
        at Function.Module._load (module.js:439:3)
        at Module.runMain (module.js:605:10)
        at run (bootstrap_node.js:420:7)
        at startup (bootstrap_node.js:139:9)
        at bootstrap_node.js:535:3
    

    我认为,问题不在于安装,因为我有一个工作节点。来自mate的js文件夹。但是我直到现在才在这台电脑上进行配置(也许这是个错误?)

    1 回复  |  直到 3 年前
        1
  •  0
  •   ooyen    6 年前

    我在中找到了此错误的解决方案 http://www.fatalerrors.org/a/fatal-error-markcompactcollector-semi-space-copy.html . 此配置中的路径(分区)无效。删除条目后,我可以再次使用npm。