我知道在Java中進(jìn)行JNI調(diào)用時(shí)“跨越邊界”很慢。不過,我想知道什么是它,使得它慢?進(jìn)行JNI調(diào)用如此之慢時(shí),底層的jvm實(shí)現(xiàn)會做什么?
3 回答

烙印99
TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超13個(gè)贊
值得一提的是,并非所有標(biāo)native有“ slow”的Java方法。其中一些是內(nèi)在函數(shù),使它們變得非???。要檢查哪些是固有的,哪些不是固有的,可以do_intrinsic在vmSymbols.hpp中查找。

慕少森
TA貢獻(xiàn)2019條經(jīng)驗(yàn) 獲得超9個(gè)贊
基本上,JVM會為每個(gè)JNI調(diào)用解釋性地構(gòu)造C參數(shù),并且不會對代碼進(jìn)行優(yōu)化。
本文概述了更多細(xì)節(jié)
如果您有興趣對基準(zhǔn)JNI和本機(jī)代碼進(jìn)行基準(zhǔn)測試,則該項(xiàng)目具有用于運(yùn)行基準(zhǔn)的代碼。
添加回答
舉報(bào)
0/150
提交
取消