簡體   English   中英

JVM上的所有“Magic”方法都標記為Native嗎?

[英]Are all the “Magic” methods on the JVM marked as Native?

“魔術”是指具有語義的方法,這些語法不是用純Java表達的。

我知道所有native方法都很神奇,因為它們的實現是由底層運行時提供的,而不是由Java字節碼提供的。

反之亦然嗎? 所有魔法方法都是native ,還是有一些神奇的方法顯然是用純Java實現的,但是有一些JVM特殊外殼的額外幫助?

用例是我想通過檢測其字節碼來修改Java的語義。 所有這些神奇的方法都是特殊情況,我將不得不以某種方式處理。 native的都很明顯,但我想知道是否有任何無標記的魔術方法我需要注意和特殊情況。

不幸的是,在本機方法之外存在“神奇”方法。 看看內部方法 - 這些方法是JIT已知的,它在編譯方法時使用手動實現,並包括大量調用的方法,如String.indexOf, Integer.numberOfLeadingZeros等。

在Intrinsics下查看這里的一些細節以及如何確定哪些方法在JVM上進行了內部化。 我不確定注入字節碼是否會關閉內部化,但是有一個DisableIntrinsic XX選項可用於禁用選定的內在函數。

您可能會發現AspectJ已經處理了很多細節。 在進行手動字節碼操作之前,我會先看看它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM