中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Node.js API詳解之如何使用V8模塊

發布時間:2020-07-18 11:39:49 來源:億速云 閱讀:457 作者:小豬 欄目:web開發

小編這次要給大家分享的是Node.js API詳解之如何使用V8模塊,文章內容豐富,感興趣的小伙伴可以來了解一下,希望大家閱讀完這篇文章之后能夠有所收獲。

本文實例講述了Node.js API詳解之 V8模塊用法。分享給大家供大家參考,具體如下:

Node.js API詳解之 V8

v8 模塊暴露了特定于V8版本內置到 Node.js 二進制文件中的API. 通過以下方式使用:

const v8 = require('v8');

注意: APIs 和實現可能在任何時間變動。

v8.cachedDataVersionTag()

說明:

返回一個表示從V8版本,命令行標志和已檢測到的CPU功能派生的“version tag”的整數。
這對于判斷vm.Script cachedData是否兼容當前v8實例非常有用。

demo:

const v8 = require('v8');
console.log( v8.cachedDataVersionTag() );
// 2299951209

v8.getHeapSpaceStatistics()

說明:

返回關于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 } ]

v8.getHeapStatistics()

說明:

返回擁有以下參數的對象:
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(string)

說明:

v8.setFlagsFromString()可以被用來在腳本中設置V8引擎的命令行標識。此方法應該謹慎使用。
在虛擬機已經運行后修改其設置可能會造成不可預測的結果,包括崩潰和數據丟失,或者一點作用也沒有。
針對一個特定版本的Node.js,可供其使用的V8選項可以通過運行node –v8-options來獲取。
一個非官方的,由社區維護的選項清單及其效果可參見這里。

demo:

const v8 = require('v8');
v8.setFlagsFromString('mbp v8');

Serialization API

說明:

序列化API提供了一系列用于序列化JavaScript值的方法,它們兼容于HTML structured clone algorithm。
格式是向下兼容的(可以安心存儲于硬盤中)。
注意: 此API正在開發中,任何變化(包括不兼容的API或者傳輸格式)可能會隨時發生直到此警告被移除。

v8.serialize(value)

說明:

使用DefaultSerializer來序列化value到一個緩沖區中。

demo:

const v8 = require('v8');
console.log( v8.serialize('isjs') );
// 

v8.deserialize(buffer)

說明:

用默認配置來執行DefaultDeserializer從而從一個緩沖區中讀取一個JS值

demo:

const v8 = require('v8');
const serializeVal = v8.serialize('isjs');
console.log( serializeVal );
// 
console.log( v8.deserialize(serializeVal);
// isjs

class: v8.DefaultSerializer

說明:

Serializer的子類,用來將TypedArray(尤其是Buffer)和Dataview序列化成一個宿主對象,
并且對于它們底層的ArrayBuffer,只有被它們實際指向的部分會被存儲起來。

class: v8.DefaultDeserializer

說明:

Deserializer的一個子類,根據DefaultSerializer的格式而定。

new Serializer()

說明:

創建一個新的Serializer對象。

serializer.writeHeader()

說明:

寫出一個包含序列化格式版本的頭文件

serializer.writeValue(value)

說明:

序列化一個JavaScript值并將結果加入內部的緩沖區。
如果value不能被序列化則拋出錯誤。

serializer.releaseBuffer()

說明:

返回存儲里的內部緩沖區。若緩沖區已經被釋放則不應該使用此序列化機制。
如果之前的一次寫入操作失敗,那么執行此方法會造成不可預知的行為。

serializer.transferArrayBuffer(id, arrayBuffer)

說明:

標記一個ArrayBuffer, 表明它的內容正在被帶外傳輸中。
同時將ArrayBuffer包裹于一個反序列化的上下文內,之后將結果傳入deserializer.transferArrayBuffer()中。

serializer.writeUint32(value)

說明:

寫出一個原始32位無符號整型。
此方法在一個自定義的serializer._writeHostObject()中使用.

serializer.writeUint64(hi, lo)

說明:

寫出一個原始64位無符號整型,會被拆分成高32位和低32位兩部分。
此方法用于一個自定義的serializer._writeHostObject().

serializer.writeDouble(value)

說明:

寫出一個JS的number值。 從方法用于一個自定義的serializer._writeHostObject().

serializer.writeRawBytes(buffer)

說明:

將原始字節寫入序列化機制的內部緩沖區中。
反序列化機制會有對應的方法來獲得緩沖區的長度。
此方法用于一個自定義的serializer._writeHostObject()中。

serializer._writeHostObject(object)

說明:

此方法用來寫出某種宿主對象,進一步說,是由綁定的原生C++代碼所生成的一個對象。
如果無法序列化object,那么一個恰當的異常會被拋出。
此方法在Serializer對象本身是不存在的,但可在其子類中提供。

serializer._getDataCloneError(message)

說明:

當一個對象無法被克隆時,會使用此方法來生成待拋出的錯誤對象。
此方法默認為Error的構造函數,可以在子類中被覆蓋。

serializer._getSharedArrayBufferId(sharedArrayBuffer)

說明:

當序列化機制將要序列化一個ShareArrayBuffer對象時會調用此方法。
它必須為這對象返回一個32位無符號整型的ID,但若這個對象已被序列化過,則返回上一次序列化時所分配的ID。
這個ID會在對象被反序列化時傳入deserializer.transferArrayBuffer()中。
如果對象不能被序列化,則拋出異常。
Serializer類本身不包含此方法,但可以在其子類中設置它。

serializer._setTreatArrayBufferViewsAsHostObjects(flag)

說明:

表明是否視TypedArray,DataView對象為宿主對象,也就是說,是否能將他們傳入serializer._writeHostObject()中。
默認以上對象非宿主對象。

new Deserializer(buffer)

說明:

生成一個新的Deserializer對象。

deserializer.readHeader()

說明:

讀取并驗證一個頭文件(包含格式信息)。
驗證在某些情況下有可能不會通過,比如傳輸格式不合格或者不被支持。
若發生上述情況,那么一個Error會被拋出。

deserializer.readValue()

說明:

從緩沖區中反序列化一個JavaScript值,并返回它。

deserializer.transferArrayBuffer(id, arrayBuffer)

說明:

標記一個ArrayBuffer, 表明它的內容正在被帶外傳輸中。
同時將ArrayBuffer包裹于一個序列化的上下文內,之后將結果傳入serializer.transferArrayBuffer()中
(當arrayBuffer是ShareArrayBuffer實例時,返回serializer._getSharedArrayBufferId()產生的id)

deserializer.getWireFormatVersion()

說明:

讀取底層的傳輸格式的版本。很可能有助于遺留代碼來讀取舊的傳輸格式版本。
不可在.readHeader()之前調用此方法。

deserializer.readUint32()

說明:

讀取并返回一個原始32位無符號整型。
用于一個自定義的deserializer._readHostObject()。

deserializer.readUint64()

說明:

讀取一個原始64位無符號整型,將其拆分成一個包含兩個32位無符號整型的[hi, lo]數組,并返回此數組。
用于一個自定義的deserializer._readHostObject()。

deserializer.readDouble()

說明:

讀取一個JSnumber值。 用于一個自定義的deserializer._readHostObject()。

deserializer.readRawBytes(length)

說明:

從反序列化機制的內部緩沖區中讀取原始字節。length必須和傳入serializer.writeRawBytes()中的緩沖區的長度相符。
用于一個自定義的serializer.writeRawBytes()。

deserializer._readHostObject()

說明:

此方法用來寫出某種宿主對象,進一步說,是由綁定的原生C++代碼所生成的一個對象。
如果無法序列化數據,那么一個恰當的異常會被拋出。
此方法在Deserializer對象本身上是不存在的,但可有其子類提供。

看完這篇關于Node.js API詳解之如何使用V8模塊的文章,如果覺得文章內容寫得不錯的話,可以把它分享出去給更多人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

永顺县| 十堰市| 新竹市| 永安市| 鲁甸县| 奉节县| 五河县| 河北区| 阳山县| 石景山区| 望城县| 淮北市| 大荔县| 安泽县| 西华县| 平罗县| 龙口市| 宁乡县| 盐津县| 康保县| 枣强县| 磐石市| 曲松县| 柞水县| 舞钢市| 祁阳县| 婺源县| 即墨市| 静宁县| 堆龙德庆县| 阳谷县| 应城市| 荃湾区| 新河县| 清新县| 准格尔旗| 措勤县| 花垣县| 临漳县| 城口县| 塘沽区|