Module 基礎模組

模組profiler

記憶體profiler 模組

使用方法:

1
var profiler = require('profiler');

靜態函數

getHeapCodeStatistics

取得= v8 堆中代碼及其元資料的統計信息

1
static Object profiler.getHeapCodeStatistics();

回傳結果:

  • Object, 傳回元資料的統計訊息

getHeapSpaceStatistics

取得v8 堆記憶體的詳細使用情況

1
static Array profiler.getHeapSpaceStatistics();

回傳結果:

  • Array, 傳回堆記憶體的詳細使用情況

getHeapStatistics

獲取v8 堆內存使用情況的統計信息

1
static Object profiler.getHeapStatistics();

回傳結果:

  • Object, 返回堆內存使用情況的統計信息

saveSnapshot

根據指定名稱保存一個堆疊快照

1
static profiler.saveSnapshot(String fname);

呼叫參數:

  • fname: String, 堆疊快照名稱

loadSnapshot

根據指定名稱讀取一個堆疊快照

1
static HeapSnapshot profiler.loadSnapshot(String fname);

呼叫參數:

  • fname: String, 堆疊快照名稱

回傳結果:


takeSnapshot

取得目前時間節點的堆快照,堆快照記錄了當前時刻JS堆的狀態

1
static HeapSnapshot profiler.takeSnapshot();

回傳結果:


diff

執行給定的函數,並比較執行前後v8 堆的變化

1
static Object profiler.diff(Function test);

呼叫參數:

  • test: Function, 給定要測試的函數

回傳結果:

  • Object, 返回對比的結果

start

啟動一次運行狀態採樣日誌

1 2 3
static Timer profiler.start(String fname, Integer time = 60000, Integer interval = 100);

呼叫參數:

  • fname: String, 給定日誌儲存檔名
  • time: Integer, 指定採樣時間,預設1 分鐘
  • interval: Integer, 指定間隔時間,缺省100 毫秒

回傳結果:

  • Timer, 返回採樣定時器,可以透過clear 方法提前停止採樣

常量

Node_Hidden

隱藏節點,當顯示給使用者時可以被過濾掉

1
const profiler.Node_Hidden = 0;

Node_Array

陣列

1
const profiler.Node_Array = 1;

Node_String

字串

1
const profiler.Node_String = 2;

Node_Object

JS物件(字串和陣列除外)

1
const profiler.Node_Object = 3;

Node_Code

編譯後的程式碼

1
const profiler.Node_Code = 4;

Node_Closure

函數閉包

1
const profiler.Node_Closure = 5;

Node_RegExp

正規表示式

1
const profiler.Node_RegExp = 6;

Node_HeapNumber

堆中排好序的數字

1
const profiler.Node_HeapNumber = 7;

Node_Native

Native物件(非v8堆上的)

1
const profiler.Node_Native = 8;

Node_Synthetic

Synthetic物件

1
const profiler.Node_Synthetic = 9;

Node_ConsString

拼接的字串

1
const profiler.Node_ConsString = 10;

Node_SlicedString

分割的字串

1
const profiler.Node_SlicedString = 11;

Node_Symbol

符號(ES6)

1
const profiler.Node_Symbol = 12;

Node_SimdValue

堆中排好序的SIMD值(ES7)

1
const profiler.Node_SimdValue = 13;

Edge_ContextVariable

函數中的變數

1
const profiler.Edge_ContextVariable = 0;

Edge_Element

數組中的元素

1
const profiler.Edge_Element = 1;

Edge_Property

有名物件的屬性

1
const profiler.Edge_Property = 2;

Edge_Internal

JS無法進入的連結

1
const profiler.Edge_Internal = 3;

Edge_Hidden

指向需要事先計算空間大小的節點

1
const profiler.Edge_Hidden = 4;

Edge_Shortcut

指向無法事先計算空間大小的節點

1
const profiler.Edge_Shortcut = 5;

Edge_Weak

一個弱引用(被GC忽略)

1
const profiler.Edge_Weak = 6;