模組profiler
記憶體profiler 模組
使用方法:
1var profiler = require('profiler');
靜態函數
getHeapCodeStatistics
取得= v8 堆中代碼及其元資料的統計信息
1static Object profiler.getHeapCodeStatistics();
回傳結果:
- Object, 傳回元資料的統計訊息
getHeapSpaceStatistics
取得v8 堆記憶體的詳細使用情況
1static Array profiler.getHeapSpaceStatistics();
回傳結果:
- Array, 傳回堆記憶體的詳細使用情況
getHeapStatistics
獲取v8 堆內存使用情況的統計信息
1static Object profiler.getHeapStatistics();
回傳結果:
- Object, 返回堆內存使用情況的統計信息
saveSnapshot
根據指定名稱保存一個堆疊快照
1static profiler.saveSnapshot(String fname);
呼叫參數:
- fname: String, 堆疊快照名稱
loadSnapshot
根據指定名稱讀取一個堆疊快照
1static HeapSnapshot profiler.loadSnapshot(String fname);
呼叫參數:
- fname: String, 堆疊快照名稱
回傳結果:
- HeapSnapshot, 傳回讀取到的堆快照
takeSnapshot
取得目前時間節點的堆快照,堆快照記錄了當前時刻JS堆的狀態
1static HeapSnapshot profiler.takeSnapshot();
回傳結果:
- HeapSnapshot, 返回獲取到的堆資訊快照
diff
執行給定的函數,並比較執行前後v8 堆的變化
1static Object profiler.diff(Function test);
呼叫參數:
- test: Function, 給定要測試的函數
回傳結果:
- Object, 返回對比的結果
start
啟動一次運行狀態採樣日誌
1
2
3static Timer profiler.start(String fname,
Integer time = 60000,
Integer interval = 100);
呼叫參數:
- fname: String, 給定日誌儲存檔名
- time: Integer, 指定採樣時間,預設1 分鐘
- interval: Integer, 指定間隔時間,缺省100 毫秒
回傳結果:
- Timer, 返回採樣定時器,可以透過clear 方法提前停止採樣
常量
Node_Hidden
隱藏節點,當顯示給使用者時可以被過濾掉
1const profiler.Node_Hidden = 0;
Node_Array
陣列
1const profiler.Node_Array = 1;
Node_String
字串
1const profiler.Node_String = 2;
Node_Object
JS物件(字串和陣列除外)
1const profiler.Node_Object = 3;
Node_Code
編譯後的程式碼
1const profiler.Node_Code = 4;
Node_Closure
函數閉包
1const profiler.Node_Closure = 5;
Node_RegExp
正規表示式
1const profiler.Node_RegExp = 6;
Node_HeapNumber
堆中排好序的數字
1const profiler.Node_HeapNumber = 7;
Node_Native
Native物件(非v8堆上的)
1const profiler.Node_Native = 8;
Node_Synthetic
Synthetic物件
1const profiler.Node_Synthetic = 9;
Node_ConsString
拼接的字串
1const profiler.Node_ConsString = 10;
Node_SlicedString
分割的字串
1const profiler.Node_SlicedString = 11;
Node_Symbol
符號(ES6)
1const profiler.Node_Symbol = 12;
Node_SimdValue
堆中排好序的SIMD值(ES7)
1const profiler.Node_SimdValue = 13;
Edge_ContextVariable
函數中的變數
1const profiler.Edge_ContextVariable = 0;
Edge_Element
數組中的元素
1const profiler.Edge_Element = 1;
Edge_Property
有名物件的屬性
1const profiler.Edge_Property = 2;
Edge_Internal
JS無法進入的連結
1const profiler.Edge_Internal = 3;
Edge_Hidden
指向需要事先計算空間大小的節點
1const profiler.Edge_Hidden = 4;
Edge_Shortcut
指向無法事先計算空間大小的節點
1const profiler.Edge_Shortcut = 5;
Edge_Weak
一個弱引用(被GC忽略)
1const profiler.Edge_Weak = 6;