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

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. 大内存应用

【读书笔记】《深入浅出nodejs》第五章 内存控制的更多相关文章

  1. 《深入浅出Node.js》第5章 内存控制(未完)

    @by Ruth92(转载请注明出处) 第5章 内存控制 基于无阻塞.事件驱动建立的 Node 服务,具有内存消耗低的优点,非常适合处理海量的网络请求. 内存控制正是在海量请求和长时间运行的前提下进行 ...

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

    原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十五章:第一人称摄像机和动态索引 代码工程地址: https://g ...

  3. Unity Shader入门精要读书笔记(一)序章

    本系列的博文是笔者读<Unity Shader入门精要>的读书笔记,这本书的章节框架是: 第一章:着手准备. 第二章:GPU流水线. 第三章:Shader基本语法. 第四章:Shader数 ...

  4. The Art of Multiprocessor Programming读书笔记 (更新至第3章)

    这份笔记是我2013年下半年以来读“The Art of Multiprocessor Programming”这本书的读书笔记.目前有关共享内存并发同步相关的书籍并不多,但是学术文献却不少,跨越的时 ...

  5. UNP学习笔记(第十五章 UNIX域协议)

    UNIX域协议是在单个主机上执行客户/服务器通信的一种方法 使用UNIX域套接字有以下3个理由: 1.UNIX域套接字往往比通信两端位于同一个主机的TCP套接字快出一倍 2.UNIX域套接字可用于在同 ...

  6. WPF,Silverlight与XAML读书笔记第四十五 - 外观效果之模板

    说明:本系列基本上是<WPF揭秘>的读书笔记.在结构安排与文章内容上参照<WPF揭秘>的编排,对内容进行了总结并加入一些个人理解. 模板允许用任何东西完全替换一个元素的可视树, ...

  7. ArcGIS API for JavaScript 4.2学习笔记[11] 官方第五章Popups(弹窗)概览与解释

    直接跳过第三第四章了,第三章Layer和第四章可视化,怎么说呢,Layer是组织数据的,是Map的属性之一.可视化属于符号化编程,暂时不看. 第五章是对数据.结果的显示,类似于alert()..NET ...

  8. 【读书笔记】《深入浅出nodejs》第二章 模块机制

    1.什么是模块? 指在程序设计中,为完成某一功能所需的一段程序或子程序:或指能由编译程序.装配程序等处理的独立程序单位:或指大型软件系统的一部分. ----<百度百科> 2.JavaScr ...

  9. 【读书笔记】《深入浅出nodejs》第一章 Node简介

    1. Node的官方网站: http://nodejs.org 2. Node的缘起: Ryan Dahl 打算设计一个高性能的Web服务器. Ryan Dahl 认为设计高性能Web服务器的要点在于 ...

随机推荐

  1. 进击的RecyclerView入门三(要是能拖动就好了)

    还是接着上一讲"进击的RecyclerView入门二(来点小装饰?)",在上一讲中我们学到了怎么给不同的Item定制不同的外观,但貌似那个蓝色的框实在太丑了,咱还是把它干了吧. @ ...

  2. Java 数组详解 - 用法、遍历、排序、实用API

    数组,就是相同数据类型的元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命名,然后用编号区分他们的变量的集合,这个名字称为数组名,编号称为下标. 组成数组的各个变量称为数组的分量,也称为 ...

  3. DELPHI中调用XSD去验证XML的合法性

    procedure TFrmPrintReport.Button3Click(Sender: TObject);var  SchemaDoc, XmlDoc: IXMLDOMDocument2;  S ...

  4. 英语知识(与字面意思 相反的) Corner office

    Corner office 角落办公室是一种身份 角落办公室,即处于公司最佳位置的高级办公室,通常指总裁或总经理办公室.喻某人在公司或单位里的最高职务或在社会上与众不同的身份地位. 这里的角落是指方形 ...

  5. City of stars

    City of stars 英:[ˈsɪtɪ] [ɒv; (ə)v] [stɑːz] 美:[ˈsɪti] [əv] [stɑːz] Are you shining just for me? 英:[ɑː ...

  6. 牛客网_Wannafly模拟赛1

    A.矩阵 题目链接:https://www.nowcoder.com/acm/contest/submit/f8363c912a4c48a28b80f47e7102b6b8?ACMContestId= ...

  7. Storm-源码分析- Messaging (backtype.storm.messaging)

    先定义两个接口和一个类 TaskMessage类本身比较好理解, 抽象storm的message格式 对于IContext, 注释也说了, 定义messaging plugin, 通过什么渠道去发送m ...

  8. Storm-源码分析-Topology Submit-Nimbus-mk-assignments

    什么是"mk-assignment", 主要就是产生executor->node+port关系, 将executor分配到哪个node的哪个slot上(port代表slot, ...

  9. Ignatius and the Princess IV---hdu1029(动态规划或者sort)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1029 就是给你n(n是奇数)个数找出个数大于(n+1)/ 2 的那个数: n的取值范围是 n(1< ...

  10. ubuntu安装Jenkins指导

    乌班图安装Jenkins指导 安装Java :apt install default-jre 参考:https://www.cnblogs.com/xionggeclub/p/7117004.html ...