張 昱 郝允允
摘要:針對(duì)靜態(tài)競(jìng)爭(zhēng)檢測(cè)無(wú)額外運(yùn)行開銷但精度低,而動(dòng)態(tài)競(jìng)爭(zhēng)檢測(cè)精度高但因插樁有額外運(yùn)行開銷,在實(shí)際Java虛擬機(jī)的即時(shí)編譯器中以競(jìng)爭(zhēng)檢測(cè)遍形式設(shè)計(jì)實(shí)現(xiàn)了一種精確有效的增量式競(jìng)爭(zhēng)檢測(cè)算法,結(jié)合鎖集和發(fā)生序關(guān)系,依次對(duì)即時(shí)編譯的每個(gè)方法進(jìn)行一次方法內(nèi)分析,收集獨(dú)立于上下文的方法摘要,并以方法摘要為基礎(chǔ)自下而上進(jìn)行上下文敏感的跨線程方法間分析,增量計(jì)算并及時(shí)輸出潛在的競(jìng)爭(zhēng)信息,實(shí)驗(yàn)表明,算法對(duì)應(yīng)用程序無(wú)插樁且不受程序規(guī)模限制,具有與Ocallahan等人的動(dòng)態(tài)競(jìng)爭(zhēng)檢測(cè)算法類似的精度,檢測(cè)時(shí)間僅占總編譯時(shí)間的2%~4%。