NodeJS內存控制

在一般的後端語言中是沒有內存使用限制的,但是Node中通過JS使用內存時智能使用部分內存,64bit=>1.4G,32bit=>0.7G,所以Node無法直接操作大內存對象,之所以會有這種現象,是因爲Node是基於V8引擎構建,V8對於JS對象是通過自己的方式來分配和管理的。至於V8爲何要限制內存,其實是出於兩方面考慮的一是當時V8面向的是瀏覽器,大量內存的使用場景很少,二是垃圾回收機制的限制。當然這個限制可以設置。

process.memoryUsege() 查看內存使用情況。

1. 內存相關參數整理

node 啓動時添加

--max-old-space-size 新生代空間
--max-new-space-size 老生代空間
--trace_gc -e 垃圾回收日誌

2. 大內存的應用

// method1
var reader = fs.createReadStream('in.txt');
var writer = fs.createWriteStream('out.txt');
reader.on('data', function(chunk){
    writer.write(chunk);
}
reader.on('end', function(){
    writer.end();
}

// method2
var reader = fs.createReadStream('in.txt');
var writer = fs.createWriteStream('out.txt');
reader.pipe(writer);

總結: 內存在Node中的使用不是隨心所欲的,但也不是完全不擅長,應該時刻注意資源不釋放,內存泄漏,scope不明確等問題,特別是在exports和閉包的時候。如果需要用內存做緩存儘量使用內存數據庫RedisMemcached

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章