<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Chrome 開發(fā)者工具的內(nèi)存分析工具

          共 2274字,需瀏覽 5分鐘

           ·

          2023-10-16 02:47

          9e1b627f018155cbf6cbe8ae0a492acc.webp


          在理解 Chrome 開發(fā)者工具的內(nèi)存分析工具之前,你需要理解一些基本的內(nèi)存概念。


          內(nèi)存生命周期

          內(nèi)存的生命周期包括以下三個步驟:

          分配:你獲取一些內(nèi)存以便使用。這可能是通過聲明一個新的變量或者通過調(diào)用一個分配函數(shù)(如 malloc)來完成的。

          使用:你讀取或寫入這塊內(nèi)存。這可能是通過讀取或寫入變量的值來完成的。

          釋放:一旦你完成了對內(nèi)存的使用,你需要將其釋放,以便它可以被重新分配。在某些語言中,這是通過顯式調(diào)用一個釋放函數(shù)(如 free)來完成的。在JavaScript中,這是通過垃圾回收來自動完成的。


          JavaScript 內(nèi)存管理

          JavaScript 自動管理內(nèi)存。你分配內(nèi)存,使用它,然后當你完成使用時,JavaScript 會自動為你釋放內(nèi)存。這種自動內(nèi)存管理被稱為垃圾回收。


          垃圾回收

          垃圾回收器定期(或者在你的應用程序運行緩慢時)查找不再需要的內(nèi)存。它找到這些內(nèi)存,然后釋放它們。

          垃圾回收器如何知道內(nèi)存不再需要了呢?簡單來說,如果內(nèi)存不能被訪問到,那么它就不再需要了。例如,如果一個變量在函數(shù)外部是不可訪問的,那么這個變量就不再需要了。


          內(nèi)存泄漏

          如果你的應用程序持續(xù)消耗更多的內(nèi)存,而不釋放它,那么你的應用程序就有內(nèi)存泄漏。內(nèi)存泄漏可能會導致你的應用程序運行緩慢,或者甚至崩潰。


          堆(Heap)

          堆是一種數(shù)據(jù)結構,它用于存儲對象。在 JavaScript 中,所有的對象都存儲在堆中。


          堆快照

          堆快照是堆的一個靜態(tài)快照。你可以使用 Chrome 開發(fā)者工具來獲取和查看堆快照。

          49396b2d9178858188569205c74cb5ae.webp


          分配時間線

          分配時間線是一個動態(tài)的視圖,它顯示了你的應用程序在一段時間內(nèi)分配和釋放內(nèi)存的情況。你可以使用 Chrome 開發(fā)者工具來獲取和查看分配時間線。

          c0e447fbc04f396781c8b271e1afaeb2.webp


          在 Chrome 開發(fā)者工具的內(nèi)存分析中,Shallow Size 和 Retained Size 是兩個重要的概念。

          33a560f8005a049bfbac2bb4512ed8c8.webp

          Shallow Size:這是一個對象自身分配的內(nèi)存大小,不包括它引用的其他對象。

          Retained Size:這是一個對象及其所有依賴(即,可以通過該對象訪問的所有對象)的總內(nèi)存大小。換句話說,如果進行垃圾回收,那么這個對象被清除后,將會釋放的內(nèi)存大小。

          舉個例子,假設有一個對象 A,它自身的大小是 10 字節(jié),這就是它的 Shallow Size。然后,它引用了另外兩個對象 B 和 C,它們的大小分別是 20 字節(jié)和 30 字節(jié)。那么對象 A 的 Retained Size 就是 10 + 20 + 30 = 60 字節(jié)。也就是說,如果對象 A 被垃圾回收,那么將會釋放 60 字節(jié)的內(nèi)存。


          在 Chrome 開發(fā)者工具的內(nèi)存分析中,"(compiled code)×8167" 這個條目表示的是已經(jīng)被 JavaScript 引擎編譯過的代碼。

          JavaScript 是一種解釋型語言,但為了提高執(zhí)行效率,現(xiàn)代的 JavaScript 引擎(如 V8)會在運行時將 JavaScript 代碼編譯(或者說轉化)成機器代碼。這種編譯過程通常是即時的(Just-In-Time,JIT),也就是說,代碼在執(zhí)行的時候才被編譯。

          "(compiled code)×8167" 中的 "compiled code" 就是指這些被編譯過的代碼,"×8167" 表示的是這種類型的對象(也就是編譯過的代碼)的數(shù)量。

          這個條目的存在可以幫助你了解應用程序的內(nèi)存使用情況。如果 "(compiled code)" 的數(shù)量特別多,可能表示你的應用程序有大量的代碼正在執(zhí)行,或者有大量的代碼被多次編譯。這可能是一個性能優(yōu)化的點。


          在 Chrome 開發(fā)者工具的內(nèi)存分析中,"(system)×32567" 這個條目表示的是系統(tǒng)級別的對象或資源。

          "(system)" 是一個特殊的類別,它包括了由 JavaScript 引擎或瀏覽器內(nèi)部使用的一些對象或資源,這些對象或資源通常對開發(fā)者是不可見的,也不能直接通過 JavaScript 代碼來訪問或控制。

          "×32567" 表示的是這種類型的對象(也就是系統(tǒng)級別的對象或資源)的數(shù)量。

          這個條目的存在可以幫助你了解應用程序的內(nèi)存使用情況。如果 "(system)" 的數(shù)量特別多,可能表示你的應用程序正在使用大量的系統(tǒng)資源。然而,由于這些資源通常不能直接被控制,所以它們更多的是提供了一個參考,而不是一個可以直接優(yōu)化的點。


          在 Chrome 開發(fā)者工具的內(nèi)存分析中,"(array)×2200" 這個條目表示的是數(shù)組類型的對象。

          "(array)" 是一個特殊的類別,它表示 JavaScript 中的數(shù)組對象。

          "×2200" 表示的是這種類型的對象(也就是數(shù)組對象)的數(shù)量。

          這個條目的存在可以幫助你了解應用程序的內(nèi)存使用情況。如果 "(array)" 的數(shù)量特別多,可能表示你的應用程序正在使用大量的數(shù)組。這可能是一個性能優(yōu)化的點,特別是當這些數(shù)組占用了大量的內(nèi)存或者沒有被正確地釋放時。

          瀏覽 120
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产一级操逼 | 亚洲第一www | 大香蕉伊人丁香五月 | 女人天堂AV | 熊猫成人免费视频网站 |