Please enable JavaScript.
Coggle requires JavaScript to display documents.
深入浅出Node, 继续 (理解Buffer) - Coggle Diagram
深入浅出Node
内存控制
内存泄露排查
内存泄露
实质:应当回收的对象出现意外没有被回收,常驻内存
进程需要分配的内存>回收的内存
原因
队列消费不及时
作用域未释放
内存当缓存
限制缓存无限增长
采用进程外的缓存
Redis
高效使用内存
作用域scope
变量的主动释放
全局变量最后释放
delete
重新赋值undefined
更好,delete可能干扰V8优化
作用域链条
向上访问(内访问外)
闭包
外部作用域访问内部作用域
这个“内部”中的变量由返回函数捕获:也算是这个函数的外部
实质是内部访问外部,形式上是外部访问内部
内部函数返回值被作为变量引用
执行完成后,内部函数作用域不释放
通过执行变量所表示的函数,访问内部变量
内存指标
堆外内存
非V8分配内存
不受限制
堆内内存
V8分配,受垃圾回收限制
查看内存使用情况
进程的内存占用
系统的内存占用
V8垃圾回收机制,内存限制
内存限制
前端网页需求V8内存分配充分
大内存对象V8无法满足:V8只能利用部分内存
V8对象分配
垃圾回收机制限制
可以打开内存限制
使用堆
V8虚拟机
Node的JS脚本引擎(解析,运行,内存管理,文件管理)
V8处理核心
垃圾回收机制
V8主要的垃圾回收算法
Scavenge
Cheney
Mark-Sweep,Mark-Compack
内存分代:老生代,新生代
Incremental marking
查看垃圾回收日志
大内存应用
流
不受V8内存限制
异步编程
解决方案
promise/deferred模式
流程控制库
async
异步的并行执行
异步调用的依赖处理
异步的串行执行
自动依赖处理
step
尾触发与next
wind
事件发布/订阅模式
监听模式
事件订阅模式操作
事件侦听器,捕获事件和消息+回调函数处理消息
事件发布模式操作
发布事件传递消息给侦听器
nodes的events模块
并发控制
async:parallelLimit
优势与难点
难点
深层嵌套
多个异步调用
阻塞代码
没有沉睡功能
调用setTimeout解决
多线程编程
异常处理
try/catch/final代码块无法捕获回调函数执行的异常
将异常作为回调函数第一个实参传回,如果为空,表示没有异常抛出
异步转同步
优势
基于事件驱动,非阻塞I/O模型
函数式编程
偏函数partial fun
指定部分参数产生一个新的定制函数
返回值(函数)还需要参数
高阶函数:以函数为参数或返回值的函数
Node对于事件的处理方式
JS中的高阶函数
map,reduce,filter,forEach
NodeJ简介
模块机制
异步I/O
理解Buffer
网络编程
构建web应用
玩转进程
测试
产品化
继续
理解Buffer
Buffer的拼接
Buffer与性能
Buffer的转换
Buffer的结构
模块结构
JS与C++结合的模块
启动加载全局对象上
堆外内存不受V8限制
对象结构
16进制两位数0-255元素数列
具有数组的属性和方法
内存分配