Node KeyNote

Node KeyNote

1、实际上,.node文件在windows下它是一个.dll文件,在*nix下则是一个.so文件。

2、默认变量

  function(exports, require, module, __filename, __dirname){

  }

3、通过dlopen()方法加载.node文件。也可直接require加载。

4、.json文件,通过fs模块读取文件后,用JSON.parse()解析返回结果。也可直接require加载。

5、如果没有扩展名,Node会按.js、.json、.node次序依次尝试。

6、setTimeout(fn,0)要动用红黑树,开销较大。process.nextTick()可替代。

7、process.nextTick()优先级高于setImmediate()

   setImmediate()在每轮循环中执行链表中的一个回调函数。

8、events模块,具有addListener/on()、once()、removeListener()、removeAllListeners()方法.

9、util模块的inherits(subclass, superclass)提供了继承功能。

10、Node中通过Js使用的内存在64位系统下约为1.4G,32位系统下约为0.7G。

11、1.5G的垃圾回收,V8做一次小的垃圾回收需要50ms以上,做一次大的需要1秒以上。

12、process.memoryUsage()可以查看内存使用情况。

13、Js的内存空间分为新生代、老生代。新生代使用Scavenge算法,老生代使用Mark-Sweep、Mark-Copact算法。

14、应用启动时添加--trace_gc参数,应用会将垃圾回收信息打死到gc.log文件中。

15、应用启动时添加--prof参数,应用会输出profile log,通过linux-tick-processor可以查看。

16、Buffer对象由C++模块直接分配内存,没有V8内存限制的问题。

原文地址:https://www.cnblogs.com/tekkaman/p/6354550.html