Javascript在客戶端對于unicode編碼的數據操作支持非常友好,但是對二進制數據的處理就不盡人意。Node.js為了能夠處理二進制數據或非unicode編碼的數據,便設計了Buffer類,該類實現了Uint8Array接口,并對其進行了優(yōu)化,它的實例類似于整型數組,但是它的大小在創(chuàng)建后便不可調整。在介紹Buffer如何使用之前,先介紹幾個知識點。

1、V8引擎的內存使用限制

V8引擎最大堆內存使用在32位系統(tǒng)上默認為512M,在64位系統(tǒng)上是1GB,雖然可以使用--max-old-space-size參數調整該值,但還是建議要用到大內存的時候使用Buffer或Stream,因為Buffer的內存分配不在V8的堆上。

2、單個Buffer實例大小限制

單個Buffer實例的大小最大數值為1GB-1(32位系統(tǒng))或2GB-1(64位系統(tǒng)),所以在創(chuàng)建Buffer實例的時候不能超過該值,或者使用readFile()方法讀取大文件,否則將拋出RangeError錯誤。

3、8KB池

Nodejs在創(chuàng)建Buffer實例的時候,當用戶申請的空間大于8KB,會直接調用內部的createUnsafeBuffer()方法創(chuàng)建一個Buffer,如果申請的空間大于0且小于4KB,新的Buffer則會建立在當前的8kb SLAB上,并更新剩余空間,如下圖所示:
seo優(yōu)化培訓,網絡推廣培訓,網絡營銷培訓,SEM培訓,網絡優(yōu)化,在線營銷培訓

下面介紹Buffer API的簡單使用:
1、創(chuàng)建Buffer實例
使用Buffer.from(), Buffer.alloc(), Buffer.allocUnsafe()等方法來創(chuàng)建一個Buffer實例,6.0版本以前直接使用構造函數創(chuàng)建的方法

延伸閱讀

學習是年輕人改變自己的最好方式-Java培訓,做最負責任的教育,學習改變命運,軟件學習,再就業(yè),大學生如何就業(yè),幫大學生找到好工作,lphotoshop培訓,電腦培訓,電腦維修培訓,移動軟件開發(fā)培訓,網站設計培訓,網站建設培訓學習是年輕人改變自己的最好方式