[英]Java JNI stackfall prevention
您是否已打開這些JVM設置?
-verbose:jni -Xcheck:jni
我發現它們對於JNI代碼的最初開發非常寶貴。
-Xcheck:jni
選項激活圍繞JNI函數的一組包裝器函數。 包裝函數對傳入的參數執行檢查。 這些檢查包括:
Get<Type>Field
或Set<Type>Field
調用。 我想到兩件事:
1)。 如果您有可能將C ++代碼作為一個單獨的進程運行(使用任何RPC技術進行通信),則可以避開此問題,盡管會犧牲性能。
2)。 您是C ++ / JNI開發人員的擺布。 我提倡的大多數問題都在JNI層的“皮膚”上。 也就是說,我有一個相當穩定的現有庫,我將其包裝在JNI中。 如果我無意中將空指針傳遞給了現有代碼,該庫將變得不高興,並且如果我未能檢查空值作為響應,我也會遇到問題。 因此,我們付出了很多努力來清理該包裝層。 在可能出現意外結果的任何地方,我們都添加了檢查功能。
當然,如果整個庫是新庫,那么生活會更艱難-最后,您只需要生成可靠的代碼即可。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.