一步一步來實現(xiàn)簡單安卓性能監(jiān)控SDK之兩個重要函數(shù)

instrumentation.redefineClasses(def)

  • 英文含義
instrumentation.redefineClasses.png

翻譯過來就是

  • 使用提供的類文件重新定義提供的一組類。

  • 該方法用于替換類的定義撑教,而不引用現(xiàn)有的類文件字節(jié),就像從源進行重新編譯以進行修復(fù)和繼續(xù)調(diào)試時一樣。 在現(xiàn)有類文件字節(jié)要轉(zhuǎn)換的地方(例如擂仍,在字節(jié)碼檢測中)應(yīng)該使用retransformClasses。
    一句話:在需要字節(jié)碼轉(zhuǎn)換的時候熬甚,直接從原路徑讀取類字節(jié)碼逢渔,不引用內(nèi)存中已經(jīng)加載的字節(jié)碼。

  • 該方法對一組類文件進行操作乡括,以便同時允許多個類的相互依賴的更改(A類的重新定義可能需要重新定義B類)肃廓。

  • 如果重新定義的方法具有活動堆棧幀,則這些活動幀將繼續(xù)運行原始方法的字節(jié)碼诲泌。 重新定義的方法將用于新的調(diào)用盲赊。
    也就是說,既往不咎的意思呀7笊ā0ⅰ!

  • 該方法不會導(dǎo)致任何初始化葵第,除了在常規(guī)JVM語義下會發(fā)生绘迁。 換句話說,重新定義一個類并不會導(dǎo)致它的初始化器被運行卒密。 靜態(tài)變量的值將保持在調(diào)用之前缀台。

  • 重新定義的類的實例不受影響。

  • 重定義可能會更改方法體哮奇、常量池和屬性膛腐。重定義不得添加、移除屏镊、重命名字段或方法依疼;不得更改方法簽名痰腮、繼承關(guān)系而芥。在以后的版本中,可能會取消這些限制膀值。在應(yīng)用轉(zhuǎn)換之前棍丐,類文件字節(jié)不會被檢查误辑、驗證和安裝。如果結(jié)果字節(jié)錯誤歌逢,此方法將拋出異常巾钉。

  • 如果此方法拋出異常,則不會重定義任何類秘案。

  • 此方法旨在用于檢測砰苍,正如類規(guī)范所述。

參數(shù):
definitions - 要使用相應(yīng)定義來進行重定義的類數(shù)組阱高;允許長度為 0 數(shù)組赚导,在這種情況下,此方法不執(zhí)行任何操作
拋出:

  • UnmodifiableClassException - 如果無法修改指定的類(isModifiableClass(java.lang.Class) 返回 false)
  • UnsupportedOperationException - 如果 JVM 的當前配置不允許重定義(isRedefineClassesSupported() 為 false)或重定義試圖做出不受支持的更改
  • ClassFormatError - 如果數(shù)據(jù)不包含有效類
  • NoClassDefFoundError - 如果類文件中的名稱與類名稱不相等
  • UnsupportedClassVersionError - 如果類文件版本號不受支持
  • ClassCircularityError - 如果新類包含循環(huán)
  • LinkageError - 如果發(fā)生鏈接錯誤
  • NullPointerException - 如果提供的定義數(shù)組或其任何組件為 null赤惊。
  • ClassNotFoundException - 不會拋出(存在只是為了兼容)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末吼旧,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子未舟,更是在濱河造成了極大的恐慌圈暗,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件裕膀,死亡現(xiàn)場離奇詭異员串,居然都是意外死亡,警方通過查閱死者的電腦和手機昼扛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進店門昵济,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人野揪,你說我怎么就攤上這事访忿。” “怎么了斯稳?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵海铆,是天一觀的道長。 經(jīng)常有香客問我挣惰,道長卧斟,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任憎茂,我火速辦了婚禮珍语,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘竖幔。我一直安慰自己板乙,他們只是感情好,可當我...
    茶點故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著募逞,像睡著了一般蛋铆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上放接,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天刺啦,我揣著相機與錄音,去河邊找鬼纠脾。 笑死玛瘸,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的苟蹈。 我是一名探鬼主播捧韵,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼汉操!你這毒婦竟也來了再来?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤磷瘤,失蹤者是張志新(化名)和其女友劉穎芒篷,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體采缚,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡针炉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了扳抽。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片篡帕。...
    茶點故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖贸呢,靈堂內(nèi)的尸體忽然破棺而出镰烧,到底是詐尸還是另有隱情,我是刑警寧澤楞陷,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布怔鳖,位于F島的核電站,受9級特大地震影響固蛾,放射性物質(zhì)發(fā)生泄漏结执。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一艾凯、第九天 我趴在偏房一處隱蔽的房頂上張望献幔。 院中可真熱鬧,春花似錦趾诗、人聲如沸蜡感。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽铸敏。三九已至,卻和暖如春悟泵,著一層夾襖步出監(jiān)牢的瞬間杈笔,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工糕非, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蒙具,地道東北人。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓朽肥,卻偏偏與公主長得像禁筏,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子衡招,可洞房花燭夜當晚...
    茶點故事閱讀 44,884評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理篱昔,服務(wù)發(fā)現(xiàn),斷路器始腾,智...
    卡卡羅2017閱讀 134,656評論 18 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,129評論 25 707
  • 牛頓和愛因斯坦都是迄今為止最偉大的物理學(xué)家, 前者是經(jīng)典物理的代表奶栖,后者則是現(xiàn)代物理學(xué)的開拓者匹表。 牛頓主要的貢獻是...
    科學(xué)認識論閱讀 2,661評論 1 12
  • 可惜的惜 愛惜的惜 晨曦的曦
    橙淺閱讀 55評論 0 0
  • 一、Chrome瀏覽器有快宣鄙、美袍镀、大的特點,以占內(nèi)存和硬盤大為代價使其速度快 二冻晤、一般用戶使用chrome會用到的功...
    林正正正閱讀 539評論 1 1