日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
JavaScript堆內(nèi)存分析新工具OneHeap

OneHeap 關(guān)注于運(yùn)行中的 JavaScript 內(nèi)存信息的展示,用可視化的方式還原了 HeapGraph,有助于理解 v8 內(nèi)存管理。

創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括尖山網(wǎng)站建設(shè)、尖山網(wǎng)站制作、尖山網(wǎng)頁制作以及尖山網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,尖山網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到尖山省份的部分城市,未來相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

JavaScript 運(yùn)行過程中的大部分?jǐn)?shù)據(jù)都保存在堆 (Heap) 中,所以 JavaScript 性能分析另一個(gè)比較重要的方面是內(nèi)存,也就是堆的分析。

利用 Chrome Dev Tools 可以生成應(yīng)用程序某個(gè)時(shí)刻的堆快照 (HeapSnapshot),它較完整地記錄了各種對(duì)象和引用的情況,堪稱查找內(nèi)存泄露問題的神器。 和 Profile 結(jié)果一樣,快照可以被導(dǎo)出成 .heapsnapshot 文件。

上周發(fā)布了工具 OneProfile , 可以用來動(dòng)態(tài)地展示 Profile 的結(jié)果,分析各種函數(shù)的調(diào)用關(guān)系。周末我用類似的思路研究了一下 .heapsnapshot 文件,做了這個(gè)網(wǎng)頁小工具,把 Heap Snapshot 用有向圖的方式展現(xiàn)出來。

OneHeap 名字的由來

There are only two hard things in Computer Science: cache invalidation and naming things. -- Phil Karlton

目前還沒有時(shí)間想一個(gè)高端、大氣、上檔次的名字,因?yàn)槲夜┞毜墓久?OneAPM ( 省去軟廣1000字,總之做性能監(jiān)控很牛),所以就取名 OneHeap 啦。 它是 Toolkit 里的第二個(gè)。

如何生成 Heap Snapshot 文件

使用 Chrome 打開 測(cè)試頁面 按 F12 打開 Devtools,切換到 Profiles 頁,選擇 Take Heap Snapshot。稍等片刻,在生成的 Snapshot 上點(diǎn)擊右鍵可以導(dǎo)出,文件后綴一般是 .heapsnapshot。

Node.JS

如果你是 Node.JS 工程師,可以安裝 heapdump 這個(gè)很有名的模塊。

https://github.com/bnoordhuis/node-heapdump

上面兩種方法都可以生成 .heapsnapshot 文件,這個(gè)是用來測(cè)試的 nodejs.heapsnapshot

理解 .heapsnapshot 文件格式

打開測(cè)試用的 nodejs.heapsnapshot 文件,這是一個(gè)很大的 JSON 對(duì)象:

snapshot 屬性保存了關(guān)于快照的一些基本信息,如 uid,快照名,節(jié)點(diǎn)個(gè)數(shù)等

nodes 保存了是所有節(jié)點(diǎn)的 id,name,大小信息等,對(duì)應(yīng) v8 源碼里的 HeapGraphNode

edges 屬性保存了節(jié)點(diǎn)間的映射關(guān)系,對(duì)應(yīng) v8 源碼的 HeapGraphEdge

strings 保存了所有的字符串, nodes 和 edges 中不會(huì)直接存字符串,而是存了字符串在 strings 中的索引

堆快照其實(shí)是一個(gè)有向圖的數(shù)據(jù)結(jié)構(gòu),但是 .heapsnapshot 文件在存儲(chǔ)的過程中使用了數(shù)組來存儲(chǔ)圖的結(jié)構(gòu),這一設(shè)計(jì)十分巧妙而且減少了所需磁盤空間的大小。

nodes 屬性

nodes 是一個(gè)很長一維的數(shù)組,但是為了閱讀方便,v8 在序列化的時(shí)候會(huì)自動(dòng)加上換行。按照 v8 版本的不同,可能是5個(gè)一行,也可能是6個(gè)一行,如果是 6 個(gè)一行,則多出來的一個(gè) trace_node_id 屬性。

 


當(dāng)前名稱:JavaScript堆內(nèi)存分析新工具OneHeap
文章URL:http://www.dlmjj.cn/article/ccohgic.html