凡走過必留下痕跡 – 如何獲得 memory allocation 的 footprint

在開發軟體的過程中,難免會碰上 memory leak 或是碰上需要減少記憶體使用量的情況。碰到這種事情時,我們會需要 memory allocation 的 footprint,才能夠找出問題點。開發 Firefox 桌面版、Firefox for Android,或是 Firefox OS 的過程當然也不例外。

這三者尋找 memory allocation 的 footprint 的方式是很類似的,本篇文章將會以 Firefox OS 為例,介紹如何得到 about:memory 中會看到的 heap-unclassified 這塊記憶體的 footprint

1. 在 .userconfig 中加上以下參數( .userconfig 位於 B2G working directory 下,第一次需要自己動手加),才能編譯出我們所需要的 gecko。DMD 是打開 “dark mass detector" 紀錄 footprint,NOOPT 是為了確保解譯出來 footprint 正確無誤。

2. 編譯完成且安裝正確的 gecko 到手機上後,如果在手機的 logcat 中可以看到以下資訊,那就是使用到正確的 gecko 啦!

3. 如何拿到、並正確解譯 memory allocation 的 footprint?我們要先進入 B2G working directory 下的 tools 這個資料夾,執行 get_about_memory.py. 以下我以一隻叫開發代號叫做 unagi 的手機為例:

第三步需要特別注意的三個參數:
3-a. –product 是用來指定我們在 config 時的裝置名稱
3-b. –gecko-objdir 是用來指定 gecko obj 的資料夾
3-c. 如果沒有加上 –no-auto-open,則會直接開啟 Firefox 瀏覽器,可以查看 about:memory 的內容
3-d*. 目前 Firefox OS 使用的 toolchain 跟 android ICS 4.0.4 一樣,所以 –toolchain-prefix 以及 –toolchain-dir 這兩組參數就使用 android ICS 4.0.4 的。如果將來新版的 Firefox OS 用了不同的 toolchain,我們也是可以透過執行 “. setup.sh" 來查看正確的版本以及位置。

第三步做完以後,會在 tools 裡面產生 about-memory-[流水號] 的資料夾。about-memory 裡面放的就是 b2g process 以及所有 app process 的記憶體使用狀況,和長得像是下面這樣, memory allocation 的 footprint 了。

註:
[1] 更多關於 DMD 的資料
[2] 更多關於 memory reporter 以及 about:memory 的資料

 

 

 

您可能也會喜歡

目前找不到相關文章

共 2 則讀者回應

  1. 參照: 平價智慧手機大解密-Firefox OS 記憶體管理與優化 | Mozilla Tech | 謀智台客

  2. 參照: 航向 128MB 的偉大航道 – Gaia • 神奇的可視範圍監視器 | Mozilla Tech | 謀智台客

對此文章發表回應

你的電子郵件位址並不會被公開。 必要欄位標記為 *