zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    创建型模式
    C# 数据结构 单链表反转
    没有人能随随便便成功
    If you are a new test manager – From google testing blog
    数据库惊魂
    foreach中的隐式类型转换
    C# 点滴 枚举
    C# 面试题目 单链表中删除重复数据
    0909关于编译原理课程的认识
    0920编译原理第二次上机作业
  • 原文地址:https://www.cnblogs.com/cag2050/p/9795248.html
Copyright © 2011-2022 走看看