您好,登錄后才能下訂單哦!
小編這次要給大家分享的是Node.js API詳解之如何使用V8模塊,文章內容豐富,感興趣的小伙伴可以來了解一下,希望大家閱讀完這篇文章之后能夠有所收獲。
本文實例講述了Node.js API詳解之 V8模塊用法。分享給大家供大家參考,具體如下:
Node.js API詳解之 V8
v8 模塊暴露了特定于V8版本內置到 Node.js 二進制文件中的API. 通過以下方式使用:
const v8 = require('v8');
注意: APIs 和實現可能在任何時間變動。
說明:
返回一個表示從V8版本,命令行標志和已檢測到的CPU功能派生的“version tag”的整數。
這對于判斷vm.Script cachedData是否兼容當前v8實例非常有用。
demo:
const v8 = require('v8'); console.log( v8.cachedDataVersionTag() ); // 2299951209
說明:
返回關于v8堆空間的統計,即組成v8堆的片段。
通過V8 GetHeapSpaceStatistics 函數提供統計信息,無論堆空間的順序,或是堆空間的可用性都可以被保證,并且可能是多個V8版本。
demo:
const v8 = require('v8'); console.log( v8.getHeapSpaceStatistics() ); // [ { space_name: 'new_space', // space_size: 2097152, // space_used_size: 706992, // space_available_size: 324176, // physical_space_size: 2051712 }, // { space_name: 'old_space', // space_size: 2420736, // space_used_size: 2325072, // space_available_size: 176, // physical_space_size: 2368592 } ]
說明:
返回擁有以下參數的對象:
total_heap_size
total_heap_size_executable
total_physical_size
total_available_size
used_heap_size
heap_size_limit
malloced_memory
peak_malloced_memory
does_zap_garbage
does_zap_garbage是個0/1式布爾值,它凸顯是否設置了–zap_code_space選項。
若為真,那么V8引擎會用一個位模式來覆蓋堆中的垃圾。
如此,RSS(常駐內存集)會變得越來越大,因為V8會一直征用所有的堆頁,從而讓他們更難被操作系統交換掉。
demo:
const v8 = require('v8'); console.log( v8.getHeapStatistics() ); // { total_heap_size: 7159808, // total_heap_size_executable: 3670016, // total_physical_size: 6020992, // total_available_size: 1492618992, // used_heap_size: 4550336, // heap_size_limit: 1501560832, // malloced_memory: 8192, // peak_malloced_memory: 1185928, // does_zap_garbage: 0 }
說明:
v8.setFlagsFromString()可以被用來在腳本中設置V8引擎的命令行標識。此方法應該謹慎使用。
在虛擬機已經運行后修改其設置可能會造成不可預測的結果,包括崩潰和數據丟失,或者一點作用也沒有。
針對一個特定版本的Node.js,可供其使用的V8選項可以通過運行node –v8-options來獲取。
一個非官方的,由社區維護的選項清單及其效果可參見這里。
demo:
const v8 = require('v8'); v8.setFlagsFromString('mbp v8');
說明:
序列化API提供了一系列用于序列化JavaScript值的方法,它們兼容于HTML structured clone algorithm。
格式是向下兼容的(可以安心存儲于硬盤中)。
注意: 此API正在開發中,任何變化(包括不兼容的API或者傳輸格式)可能會隨時發生直到此警告被移除。
說明:
使用DefaultSerializer來序列化value到一個緩沖區中。
demo:
const v8 = require('v8'); console.log( v8.serialize('isjs') ); //
說明:
用默認配置來執行DefaultDeserializer從而從一個緩沖區中讀取一個JS值
demo:
const v8 = require('v8'); const serializeVal = v8.serialize('isjs'); console.log( serializeVal ); // console.log( v8.deserialize(serializeVal); // isjs
說明:
Serializer的子類,用來將TypedArray(尤其是Buffer)和Dataview序列化成一個宿主對象,
并且對于它們底層的ArrayBuffer,只有被它們實際指向的部分會被存儲起來。
說明:
Deserializer的一個子類,根據DefaultSerializer的格式而定。
說明:
創建一個新的Serializer對象。
說明:
寫出一個包含序列化格式版本的頭文件
說明:
序列化一個JavaScript值并將結果加入內部的緩沖區。
如果value不能被序列化則拋出錯誤。
說明:
返回存儲里的內部緩沖區。若緩沖區已經被釋放則不應該使用此序列化機制。
如果之前的一次寫入操作失敗,那么執行此方法會造成不可預知的行為。
說明:
標記一個ArrayBuffer, 表明它的內容正在被帶外傳輸中。
同時將ArrayBuffer包裹于一個反序列化的上下文內,之后將結果傳入deserializer.transferArrayBuffer()中。
說明:
寫出一個原始32位無符號整型。
此方法在一個自定義的serializer._writeHostObject()中使用.
說明:
寫出一個原始64位無符號整型,會被拆分成高32位和低32位兩部分。
此方法用于一個自定義的serializer._writeHostObject().
說明:
寫出一個JS的number值。 從方法用于一個自定義的serializer._writeHostObject().
說明:
將原始字節寫入序列化機制的內部緩沖區中。
反序列化機制會有對應的方法來獲得緩沖區的長度。
此方法用于一個自定義的serializer._writeHostObject()中。
說明:
此方法用來寫出某種宿主對象,進一步說,是由綁定的原生C++代碼所生成的一個對象。
如果無法序列化object,那么一個恰當的異常會被拋出。
此方法在Serializer對象本身是不存在的,但可在其子類中提供。
說明:
當一個對象無法被克隆時,會使用此方法來生成待拋出的錯誤對象。
此方法默認為Error的構造函數,可以在子類中被覆蓋。
說明:
當序列化機制將要序列化一個ShareArrayBuffer對象時會調用此方法。
它必須為這對象返回一個32位無符號整型的ID,但若這個對象已被序列化過,則返回上一次序列化時所分配的ID。
這個ID會在對象被反序列化時傳入deserializer.transferArrayBuffer()中。
如果對象不能被序列化,則拋出異常。
Serializer類本身不包含此方法,但可以在其子類中設置它。
說明:
表明是否視TypedArray,DataView對象為宿主對象,也就是說,是否能將他們傳入serializer._writeHostObject()中。
默認以上對象非宿主對象。
說明:
生成一個新的Deserializer對象。
說明:
讀取并驗證一個頭文件(包含格式信息)。
驗證在某些情況下有可能不會通過,比如傳輸格式不合格或者不被支持。
若發生上述情況,那么一個Error會被拋出。
說明:
從緩沖區中反序列化一個JavaScript值,并返回它。
說明:
標記一個ArrayBuffer, 表明它的內容正在被帶外傳輸中。
同時將ArrayBuffer包裹于一個序列化的上下文內,之后將結果傳入serializer.transferArrayBuffer()中
(當arrayBuffer是ShareArrayBuffer實例時,返回serializer._getSharedArrayBufferId()產生的id)
說明:
讀取底層的傳輸格式的版本。很可能有助于遺留代碼來讀取舊的傳輸格式版本。
不可在.readHeader()之前調用此方法。
說明:
讀取并返回一個原始32位無符號整型。
用于一個自定義的deserializer._readHostObject()。
說明:
讀取一個原始64位無符號整型,將其拆分成一個包含兩個32位無符號整型的[hi, lo]數組,并返回此數組。
用于一個自定義的deserializer._readHostObject()。
說明:
讀取一個JSnumber值。 用于一個自定義的deserializer._readHostObject()。
說明:
從反序列化機制的內部緩沖區中讀取原始字節。length必須和傳入serializer.writeRawBytes()中的緩沖區的長度相符。
用于一個自定義的serializer.writeRawBytes()。
說明:
此方法用來寫出某種宿主對象,進一步說,是由綁定的原生C++代碼所生成的一個對象。
如果無法序列化數據,那么一個恰當的異常會被拋出。
此方法在Deserializer對象本身上是不存在的,但可有其子類提供。
看完這篇關于Node.js API詳解之如何使用V8模塊的文章,如果覺得文章內容寫得不錯的話,可以把它分享出去給更多人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。