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

          SWT 重啟案例分析(四)

          共 1569字,需瀏覽 4分鐘

           ·

          2020-10-25 16:46

          和你一起終身學(xué)習(xí),這里是程序員Android

          經(jīng)典好文推薦,通過(guò)閱讀本文,您將收獲以下知識(shí)點(diǎn):

          一、TimeoutException 導(dǎo)致系統(tǒng)重啟Log
          二、TimeoutException 重啟 trace 分析
          三、TimeoutException 導(dǎo)致的重啟解決方案

          一、TimeoutException 導(dǎo)致系統(tǒng)重啟Log

          1.TimeoutException log如下:

          TimeoutException 導(dǎo)致系統(tǒng)重啟

          Systemserver TimeoutException

          二、TimeoutException 重啟 trace 分析

          1.TimeoutException Trace 如下:

          1090 線程 被線程134 held

          線程134 被線程 92 held

          線程 92 是卡住的主要原因 在

          從重啟的Jave Exception trace看由于在ART GC時(shí),如果檢查到某個(gè)對(duì)象其所屬的類型overridefinalize函數(shù),會(huì)把這個(gè)對(duì)象添加到referenceQueue中。

          referenceQueueFinalizerDaemon線程監(jiān)控,如果里面有內(nèi)容,就會(huì)逐個(gè)取出并調(diào)用其finalize函數(shù)。

          這樣在下一次GC的時(shí)候才真正的把這個(gè)對(duì)象占用的memory給回收掉。

          Java進(jìn)程會(huì)默認(rèn)等待10s,如果10s還沒(méi)有執(zhí)行完,進(jìn)程會(huì)強(qiáng)制拋出TimeoutException。

          一般是由于當(dāng)時(shí)系統(tǒng)IO忙或者memory比較緊張,導(dǎo)致不能及時(shí)喚醒這個(gè)線程及時(shí)往下執(zhí)行。

          三、TimeoutException 導(dǎo)致的重啟解決方案

          TimeoutException超時(shí)導(dǎo)致的系統(tǒng)重啟,一般是由于當(dāng)時(shí)系統(tǒng)IO忙或者memory比較緊張,沒(méi)有太好的修改方案,只能增長(zhǎng)超時(shí)時(shí)間,或者更換好一點(diǎn)的Memory。

          增長(zhǎng)時(shí)間的修改方案如下

          1. 修改 Daemons類

          主要修改 Daemons.java中的MAX_FINALIZE_NANOS 時(shí)間。
          Daemons類 路徑如下:
          /libcore/libart/src/main/java/java/lang/Daemons.java

          private static final long MAX_FINALIZE_NANOS = 10L * NANOS_PER_SECOND;
          修改為:
          private static final long MAX_FINALIZE_NANOS = 15L * NANOS_PER_SECOND;
          2.修改 ActivityMangerService

          增長(zhǎng)ActivityMangerService.javaCONTENT_PROVIDER_PUBLISH_TIMEOUT的時(shí)間。

          ActivityMangerService類路徑如下:
          frameworks\base\services\core\java\com\android\server\am\ActivityMangerService.java

           static final int CONTENT_PROVIDER_PUBLISH_TIMEOUT = 10*1000;
          修改為
          static final int CONTENT_PROVIDER_PUBLISH_TIMEOUT = 15*1000;

          至此,本篇已結(jié)束。轉(zhuǎn)載網(wǎng)絡(luò)的文章,小編覺(jué)得很優(yōu)秀,歡迎點(diǎn)擊閱讀原文,支持原創(chuàng)作者,如有侵權(quán),懇請(qǐng)聯(lián)系小編刪除。同時(shí)感謝您的閱讀,期待您的關(guān)注。

          瀏覽 43
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

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

          手機(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>
                  免费看成人做爰视频 | 免费黄色长视频 | 看毛片网址 | 操女人视频网站 | 中文字幕在线视频无码 |