<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>

          MemoryLeakDetector內(nèi)存泄漏監(jiān)控工具

          聯(lián)合創(chuàng)作 · 2023-09-27 08:27

          MemoryLeakDetector 是字節(jié)跳動西瓜視頻基礎(chǔ)技術(shù)團(tuán)隊(duì)開發(fā)的一款 native 內(nèi)存泄漏監(jiān)控工具,具有接入簡單、監(jiān)控范圍廣、性能優(yōu)良、 穩(wěn)定性好的特點(diǎn)。廣泛用于字節(jié)跳動旗下各大 App 的 native 內(nèi)存泄漏治理,收益顯著。

          快速開始

          步驟1:將 JitPack 存儲庫添加到構(gòu)建文件

          allprojects {
              repositories {
                  maven { url 'https://jitpack.io' }
              }
          }

          步驟2:添加依賴項(xiàng)

          dependencies {
              implementation 'com.github.bytedance:memory-leak-detector:0.1.8'
          }

          步驟3:添加用于簡單使用的代碼(使用廣播控件不需要此步驟)

          // 監(jiān)控指定的so
          Raphael.start(
              Raphael.MAP64_MODE|Raphael.ALLOC_MODE|0x0F0000|1024,
              "/storage/emulated/0/raphael", // need sdcard permission
              ".*libxxx\\\\\\\\.so$"
          );
          // 監(jiān)控整個進(jìn)程
          Raphael.start(
              Raphael.MAP64_MODE|Raphael.ALLOC_MODE|0x0F0000|1024,
              "/storage/emulated/0/raphael", // need sdcard permission
              null
          );
          ## 通過本地廣播監(jiān)控指定的so
          ## 0x0CF0400=Raphael.MAP64_MODE|Raphael.ALLOC_MODE|0x0F0000|1024
          adb shell am broadcast -a com.bytedance.raphael.ACTION_START -f 0x01000000 --es configs 0xCF0400 --es regex ".*libXXX\\\\\\\\.so$"
          ## 監(jiān)控整個進(jìn)程(RaphaelReceiver 組件所在的進(jìn)程)
          ## 0x0CF0400=Raphael.MAP64_MODE|Raphael.ALLOC_MODE|0x0F0000|1024
          adb shell am broadcast -a com.bytedance.raphael.ACTION_START -f 0x01000000 --es configs 0xCF0400

          步驟4: 打印結(jié)果

          // 代碼控制
          Raphael.print();
          ## 本地廣播
          adb shell am broadcast -a com.bytedance.raphael.ACTION_PRINT -f 0x01000000

          步驟5:分析

          ## 聚合 report,該文件在 print/stop 之后生成,需要手動 pull 出來
          ## 用到離線符號符號化功能的,需將raphael.py里的addr2line改為自己本地的NDK路徑
          ##   -r: 日志路徑, 必需,手機(jī)端生成的report文件
          ##   -o: 輸出文件名,非必需,默認(rèn)為 leak-doubts.txt
          ##   -s: 符號表目錄,非必需,有符號化需求時可傳,符號表文件需跟so同名,如:libXXX.so,多個文件需放在同一目錄下兒
          python3 library/src/main/python/raphael.py -r report -o leak-doubts.txt -s ./symbol/
          
          ## 數(shù)據(jù)格式說明
          ##  201,852,591	totals // 單指raphael攔截到的未釋放的虛擬內(nèi)存總和
          ##  118,212,424	libandroid_runtime.so
          ##   28,822,002	libhwui.so
          ##   24,145,920	libstagefright.so
          ##   15,679,488	libv8.cr.so
          ##    9,566,192	libc++_shared.so
          ##       25,536	libsqlite.so
          ##       12,288	libv8_libbase.cr.so
          ##    5,388,741	extras // raphael.py里預(yù)設(shè)了一些通用配置,可以通過修改規(guī)則進(jìn)一步識別分組到extras里的數(shù)據(jù)
          ##
          ##
          ## bdb11000, 70828032, 66 => bdb11000是report里此堆棧第一次分配出的內(nèi)存地址,70828032是report里此堆棧的內(nèi)存總和,66是report里此堆棧的總次數(shù)
          ## 0x000656cf /system/lib/libc.so (pthread_create + 246)
          ## 0x0037c129 /system/lib/libart.so (art::Thread::CreateNativeThread(_JNIEnv*, _jobject*, unsigned int, bool) + 448)
          ## 0x00112137 /system/framework/arm/boot.oat (java.lang.Thread.nativeCreate + 142)
          ## 分析 maps
          ##  -m: maps文件路徑,必需
          python3 library/src/main/python/mmap.py -m maps

          步驟6:停止監(jiān)控

          // 代碼控制
          Raphael.stop();
           
          ## 廣播控制
          adb shell am broadcast -a com.bytedance.raphael.ACTION_STOP -f 0x01000000

           

          瀏覽 60
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          <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>
                  色之综合天天综合色天天棕色 | 欧美精品久久久久久久久爆乳 | 亚洲色综合视频 | 婷婷五月伊人 | 人人看人人插摸 |