• Node 内存控制


    • Node 只能使用部分内存,原因:
      node 基于 V8 构建,V8 的内存管理机制限制了内存的用量。
      在实际的使用中,不小心触碰到这个内存界限,会造成进程退出。
      V8 是通过堆来进行内存分配的;在代码中声明对象并赋值时,所使用对象的内存就分配在堆中;如果已申请的堆空闲内存不够分配新的对象,将继续申请堆内存,直到堆的大小超过 V8
      的限制为止。
      V8 为何要限制堆的大小?原因是 V8 的垃圾回收机制的限制。
      垃圾回收会引起 JavaScript 线程暂停执行;内存太大,垃圾回收时间太长,在当时的考虑下,直接限制了堆内存大小。
      这个内存限制能打开,node 在启动时传递 --max-old-space-size 或 --max-new-space-size 来调整内存限制的大小,示例如下:
      node --max-old-space-size=1700 test.js
      或者
      node --max-new-space-size=1024 test.js
      上述参数在V8初始化时生效,一旦生效就不能再动态改变。

    • V8 的垃圾回收机制
      v8 的垃圾回收策略,主要基于分代式垃圾回收机制
      在 v8 中,主要将内存分为新生代老生代两代。
      v8 堆的整体大小,就是新生代所用内存空间加上老生代所用内存空间。
      默认分配内存大小:

    系统生代 老生代 新生代(默认) 新生代(最大)
    64位系统 1400MB 32MB 64MB
    32位系统 700MB 16MB 32MB
  • 相关阅读:
    25 Groovy 相关资料
    24 使用Maven 或 Gradle构建groovy
    UVA
    UVA
    UVA
    UVA
    UVA
    【JZOJ4235】序列【数论,数学】
    【JZOJ4235】序列【数论,数学】
    【JZOJ5230】队伍统计【状压DP】
  • 原文地址:https://www.cnblogs.com/cag2050/p/9795248.html
Copyright © 2020-2023  润新知