<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                > 參考文章:? > [Memory Monitor Walkthrough](http://developer.android.com/intl/zh-cn/tools/performance/memory-monitor/index.html) # Memory Monitor能做什么? * 實時查看App的內存分配情況 * 快速判斷App是否由于GC操作造成卡頓 * 快速判斷App的Crash是否是因為超出了內存 # Memory Monitor使用準備 * 開發者選項可用 * USB調試開啟 備注:Android Studio的`Enable ADB Integration`勾選(Tools/Android下)。 # Memory Monitor面板 首先執行`adb devices`來確保設備可用,然后啟動`Android Studio`,選擇一個Android項目或者新建一個項目進入主面板,如果你有你的待測App的源碼,那么最好進入你自己的App項目中,這樣方便調試和定位問題。進入項目后,可以看到Android Studio的主面板左下角有一個`Android`標簽:? ![](https://box.kancloud.cn/2015-12-31_56849d28ca513.jpg) 點擊該標簽打開`Android`面板,如下圖所示:? ![](https://box.kancloud.cn/2015-12-31_56849d290469c.jpg) A:設備選擇? B:可監控的App選擇? C:內存的實時數據 重點來看C區域,橫坐標記錄從采集開始點到目前已經過去的時間,縱坐標是分配給App使用的內存總量[Allocated+Free],藍色區域表示已分配[Allocated]使用的的,灰色區域表示空閑[Free]未使用的。在坐標軸的右邊可以看見具體數值。 ## GC GC就是垃圾回收的意思,我們可以從Memory monitor看到何時發生了GC event,當一個內存短時間內發生掉落,我們可以認為發生了GC操作。你也可以手動觸發GC,下圖中的小車子就是觸發GC的按鈕,一旦按下就會回收那些沒被引用的對象(這個地方不能說沒用的對象,因為沒用的對象有可能是內存泄漏時的對象,后期會來研究):? ![](https://box.kancloud.cn/2015-12-31_56849d2922d32.jpg) # Memory Monitor可以發現的問題 Memory Monitor工具為監控工具,是一種發現型或者說監控性質的工具,比如醫生的四大技能[望聞問切],[望]是第一步。這里的Memory Monitor就是一種[望]的工具,目前我主要用它來看下面幾個內存問題:? 1.發現內存抖動的場景? 2.發現大內存對象分配的場景? 3.發現內存不斷增長的場景? 4.確定卡頓問題是否因為執行了GC操作 # 案例分析 ![](https://box.kancloud.cn/2015-12-31_56849d2938f05.jpg) 上面的第一段標記顯示內存突然增加了7M,我們也能看的很清楚,所以這個點我們要去定位了一下問題在哪里,是Bitmap還是什么原因造成的,第二段標記是內存抖動,很明顯在很短的時間了發生了多次的內存分配和釋放。而且在發生內存抖動的時候,也能感覺到App的卡頓,可以看出來是由于執行了GC操作造成的。? 內存的不斷增加通過Memory monitor很容易看出來,藍色的曲線是一路高歌猛進的,一看便知。 # 關于內存泄漏的問題 Memory Monitor也可以歸納到用于檢測內存泄漏的工具,但是我沒這么做,因為在實際過程中,當泄漏的點每一次很小的時候,你很難發現,沒有Heap Viewer好使。如果泄漏的對象占用內存大的話,也能通過Memory Monitor看出來。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看