首頁 > 軟體

Kotlin記憶體陷阱inline使用技巧範例詳解

2022-10-16 14:04:10

引言

inline ,翻譯過來為 內聯 ,在 Kotlin 中,一般建議用於 高階函數 中,目的是用來彌補其執行時的 額外開銷。

其原理也比較簡單,在呼叫時將我們的程式碼移動到呼叫處使用,從而降低方法呼叫時的 棧幀 層級。

棧幀: 指的是虛擬機器器在進行方法呼叫和方法執行時的資料結構,每一個棧幀裡都包含了相應的資料,比如 區域性引數,運算元棧等等。

Jvm在執行方法時,每執行一個方法會產生一個棧幀,隨後將其儲存到我們當前執行緒所對應的棧裡,方法執行完畢時再將此方法出棧,

所以內聯後就相當於省了一個棧幀呼叫。

如果上述描述中,你只記住了後半句,降低棧幀 ,那麼此時你可能已經陷入了一個使用陷阱?

錯誤範例

如下截圖中所示,我們隨便建立了一個方法,並增加了 inline 關鍵字:

觀察截圖會發現,此時IDE已經給出了提示,它建議你移除 inline , Why? 為什麼呢?


IT145.com E-mail:sddin#qq.com