海量请求+长时间运行 -> 内存控制 -> 一切资源高效循环利用

1. V8的垃圾回收机制与内存限制

  在Node中通过JavaScript使用内存时,只能使用部分内存(64位系统下约1.4GB,32位系统下约为0.7GB)。

  在V8中,所有的JavaScript对象都是通过堆来进行分配的,当申请的堆空闲内存不够分配新的对象,将继续申请堆内存,直到堆得大小超过V8的限制为止。

  为什么V8要限制堆得大小?

    -> (1)V8最初为浏览器设计,不太可能遇到用大量内存的场景。

    -> (2)V8的垃圾回收机制限制。(1.5GB的垃圾回收堆内存,需要大约50毫秒以上,这使得应用性能和响应能力会直线下降)

  突破V8限制:

    -> $node --max-old-space-size = 1700 (单位MB) or

    -> $node --max-new-space-size =1024 (单位KB)

  V8的垃圾回收机制 ---- 分代式垃圾回收机制

  查看垃圾回收机制 ---- $node --trace_gc -e "var a = [];for (var i=0; i<1000000; i++) a.push(new Array(100));" > gc.log

2. 高效使用内存

  (1)了解作用域

  (2)了解闭包

  无法立即回收的内存有:

    ->闭包

    ->全局变量引用

  因此,要小心此类变量的无限制添加

3. 内存指标

  --会存在一些我们认为会回收但是却没有被回收的对象,这会导致内存占用无限增长。一旦增长达到V8内存限制,将会得到内存溢出错误,进而导致进程退出。

  (1)查看内存使用情况 -> $node >process.memoryUsage() {

      {

       rss (resident set size 进程的常驻内存部分):132852672, (除此外,内存其余部分在交换区(swap)或文件系统(filesystem)中)

         heapTotal(堆中总共申请的内存量) :6131200,

         heapUsed(目前堆中使用中的内存量):2757120,

      }

  (2)查看系统内存占用

      -> $node >os.totalmem()  “系统的总内存”

      -> $node >os.freemem() “系统的闲置内存”

  (3)堆外内存

  受V8的垃圾回收限制的主要是V8的堆内存。

4. 内存泄漏

  造成内存泄漏的原因:

    (1)缓存

    (2)队列消费不及时

    (3)作用域未释放

5. 内存泄漏排查

  使用常见工具:

    (1)node-heapdump

    (2)node-memwatch

6. 大内存应用

转载于:https://www.cnblogs.com/libinfs/p/5922447.html

【读书笔记】《深入浅出nodejs》第五章 内存控制相关推荐

  1. 疯狂Java讲义(读书笔记)(第五章)

    第五章面向对象(下) 5.1 Java 8 增强的包装类 把字符串类型的值转换为基本类型的值有两种方式. 利用包装类提供的parseXxx(String s)静态(除了Character之外的所有包装 ...

  2. 《微观经济学新论》读书笔记——第四至五章

    嗨,这里是Subyn~记录与时间交朋友的每一天 第四章.产权理论 产权的含义.起源和作用 a) 含义:产权是基于物的存在和使用而引起的人们之间被认可的行为关系:产权是排他的:完备的产权总是以复数形式出 ...

  3. 《深入理解计算机系统》读书笔记-016(第 12 章 并发编程)

    <深入理解计算机系统>读书笔记-016(第 12 章 并发编程) 太惨了,这章真心不大看得懂啊--等把前面的补上之后把读书笔记重新整理一下吧.这样看了跟没看也没啥区别了. 在线程中,不同于 ...

  4. Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十五章:第一人称摄像机和动态索引...

    Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十五章:第一人称摄像机和动态索引 原文:Introduction to 3 ...

  5. 《资本论》读书笔记(2)第二卷第一章:资本形态变化及其循环

    <资本论>读书笔记(2)第二卷第一章:资本形态变化及其循环 +BIT祝威+悄悄在此留下版了个权的信息说: 货币资本的循环 第一阶段:资本家用手里的钱买来设备.原材料,雇来一批工人,或者说, ...

  6. 李弘毅机器学习笔记:第十五章—半监督学习

    李弘毅机器学习笔记:第十五章-半监督学习 监督学习和半监督学习 半监督学习的好处 监督生成模型和半监督生成模型 监督生成模型 半监督生成模型 假设一:Low-density Separation Se ...

  7. 读书笔记:田博士五年之后五年的总结

    读书笔记:田博士五年之后五年的总结 读书笔记:田博士五年之后五年的总结 preface 看看田博士五年的收获. 看看对我有什么帮助. content 其一 在公司的发展和自己的提升不是一个频道. 能做 ...

  8. mysql函桌为之一的_MYSQL必知必会读书笔记第十和十一章之使用函数处

    mysql简介 MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理. 拼接字段 存储在数据库表中的 ...

  9. 【Java编程思想】读书笔记(一)第一章---第五章

    Java编程思想(第四版)学习笔记 第一章---第五章 第一章:对象导论 1.1抽象过程 1. 2访问控制 第二章:一切都是对象 2. 1用引用操纵对象 2. 2基本类型 第三章:操作符 3.7.1测 ...

最新文章

  1. OpenCV实现遍历文件夹下所有文件
  2. Quora上的大牛们最喜欢哪种机器学习算法?
  3. 第12天,HTML基础
  4. 走完线上 BUG 定位最后一公里
  5. HTML入门第一和第二章
  6. 双目三维重建_【光电视界】简单介绍双目视觉三维重构
  7. java list 字段去重_如何实现java8 list按照元素的某个字段去重
  8. 机器学习模型部署_9月版部署机器学习模型
  9. BZOJ2005 NOI2010 能量采集 欧拉函数
  10. 日冕物质抛射检测matlab,日冕图像论文,关于基于实时数据的日冕物质抛射自动检测方法相关参考文献资料-免费论文范文...
  11. power bi 雷达图_【自助式数据分析平台——WonderBI(豌豆BI)】免费在线试用_软件库...
  12. react-native windows下环境搭建和现阶段开发测试问题汇总(持续更新)
  13. 周未特别节目《前赤壁赋》
  14. lammps自带命令create_atoms实现水分子建模
  15. wifi密码公式计算机,求一些高数公式,做wifi密码用?
  16. 有监督学习、无监督学习、半监督学习、强化学习
  17. Go语言核心之美 2.1-整数
  18. Pycharm远程调试服务器代码出错:[Errno 2] No such file or directory
  19. 求最长上升子序列——LIS的O(nlogn)算法(二分)
  20. 2.3软件测试与软件开发的关系

热门文章

  1. HTML设置字体颜色1008无标题,如何在HTML中设置字体颜色,你知道这几种方式吗?...
  2. 计算机控制cs,计算机控制
  3. java中bpmn流程图_Java学习之BPMN知识以及Activiti的流程部署
  4. 万维网发布服务 w3svc 已停止 除非万维_万维网和互联网的区别
  5. 利用C/C++实现较完整贪吃蛇游戏
  6. 计算机兴趣小组意义,信息技术兴趣小组开展之我见
  7. html ctf查找,Web CTF 解题思路总结—南京邮电大学攻防平台writeup
  8. vector怎么按字段查询顺序输出_7大查询匹配类函数,一次给你总结好
  9. 鸿蒙系统多会发布,华为官宣鸿蒙系统将发布,还将发布多款新品
  10. 行车记录仪设置php,行车记录仪怎么调设置