[英]DLL takes forever to load in JNI class
我正在使用加載dll庫的jni應用程序,但是它的加載時間太長。 dll在路徑中。 作為相關信息,此dll取決於路徑中也存在的其他Oracle dll。
System.loadLibrary("exmaple.dll");
您知道為什么負載永遠不會結束嗎?
首先,您可能要確定是JNI降低了加載速度,還是DLL在Windows中加載緩慢。
您可以使用以下命令測試加載dll
rundll32 example.dll,testMethod
您會得到一個錯誤的提示,即測試方法不存在,但是它將加載DLL及其依賴項。 您可以計時,看看需要多長時間。
如果Rundll32加載緩慢,請嘗試關閉病毒檢查器。 還要檢查您有多少可用內存。
如果是JNI拖慢了速度,則可以嘗試切換到JNA作為替代方案。
我做了一些測試,它似乎與線程有關。 當我在loadLibrary調用中放置一個斷點時,將不會進行下一步。 只有在我重新激活應用程序中的其他線程之后,它才轉到下一步。 我不知道這是Java錯誤還是某些線程問題。 我正在使用JDK1.6.0_11。
如果將來有人遇到相同的問題,請檢查是否存在線程問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.