【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内存限制的问题。