Module 基礎模塊

模塊profiler

內存profiler 模塊

使用方法:

1
var profiler = require('profiler');

靜態函數

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;