簡體   English   中英

DLL永遠需要在JNI類中加載

[英]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.

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