背景
最近開始接觸NodeJS,發(fā)現(xiàn)process
(process對象用于處理與當(dāng)前進(jìn)程相關(guān)的事情)對象內(nèi)有個(gè)API拂苹,及process.memoryUsage()
方法返回一個(gè)對象岂傲,該對象描述以字節(jié)為單位的Node.js進(jìn)程的內(nèi)存使用情況。
function getMe() {
var mem = process.memoryUsage()
console.log(mem)
}
getMe();
打印出的數(shù)據(jù)為:
heapTotal
和heapUsed
代表V8的內(nèi)存使用情況所灸。 external
表示綁定到由V8管理的JavaScript對象的C ++對象的內(nèi)存使用情況丽惶。rss
常駐集大小炫七,是進(jìn)程在主內(nèi)存設(shè)備(即總分配內(nèi)存的子集)中占用的空間量爬立,包括堆,代碼段和堆棧万哪。
該堆是一個(gè)對象侠驯,字符串和封閉的存儲位置。變量存儲在堆棧中奕巍,而實(shí)際的JavaScript代碼位于 代碼段中吟策。
使用Worker
線程時(shí),rss
它將是一個(gè)對整個(gè)進(jìn)程有效的值的止,而其他字段將僅引用當(dāng)前線程檩坚。
其實(shí)在瀏覽器中,Window
對象中也有一個(gè)是用來查看分析網(wǎng)站性能的及window.performance
window.performance
Web Performance API允許網(wǎng)頁訪問某些函數(shù)來測量網(wǎng)頁和Web應(yīng)用程序的性能诅福,包括 Navigation Timing API和高分辨率時(shí)間數(shù)據(jù)匾委。
方法
performance.mark()
通過一個(gè)給定的名稱,將該名稱(作為鍵)和對應(yīng)的DOMHighResTimeStamp
(作為值)保存在一個(gè)哈希結(jié)構(gòu)里氓润。該鍵值對表示了從某一時(shí)刻(譯者注:某一時(shí)刻通常是 navigationStart 事件發(fā)生時(shí)刻)到記錄時(shí)刻間隔的毫秒數(shù)赂乐。(譯者注:該方法一般用來多次記錄時(shí)間,用于求得各記錄間的時(shí)間差)
performance.now()
該方法返回一個(gè)DOMHighResTimeStamp
對象咖气,該對象表示從某一時(shí)刻(譯者注:某一時(shí)刻通常是 navigationStart 事件發(fā)生時(shí)刻)到調(diào)用該方法時(shí)刻的毫秒數(shù)挨措。
屬性
performance.timing
是一個(gè)PerformanceTiming
對象,包含延遲相關(guān)的性能信息挖滤。
performance.navigation
是一個(gè) PerformanceNavigation
對象,該對象表示在當(dāng)前給定瀏覽上下文中網(wǎng)頁導(dǎo)航的類型(譯者注:TYPE_BACK_FORWARD浅役,TYPE_NAVIGATE斩松, TYPE_RELOAD,TYPE_RESERVED)以及次數(shù)觉既。
performance.memory
在Chrome中添加的一個(gè)非標(biāo)準(zhǔn)擴(kuò)展砸民。
這里的performance.memory
就和上面的process.memoryUsage()
類似功能。
包含的信息:
(1)jsHeapSizeLomit:內(nèi)存大小限制
(2)totalJSHeadSize:可使用的內(nèi)容
(3)userdJSHeadSize:已使用的內(nèi)容