DLL需要永远加载到JNI类中

时间:2010-04-28 18:48:12

标签: java java-native-interface dllimport

我正在使用一个加载dll库的jni应用程序,但它的负载耗时太长。 dll在路径中。作为一个相关的信息,这个dll依赖于其他也在路径上的oracle dll。

System.loadLibrary("exmaple.dll");

你知道为什么负载永远不会结束吗?

2 个答案:

答案 0 :(得分:0)

首先,您可能需要确定JNI是否会降低负载,或者DLL是否只在Windows中加载缓慢。

您可以使用命令

测试加载dll
rundll32  example.dll,testMethod

您将收到测试方法不存在的错误,但它将加载DLL及其依赖项。你可以花时间看看需要多长时间。

如果使用Rundll32缓慢加载,请尝试关闭病毒检查程序。还要检查你有多少可用内存。

如果JNI减慢了速度,可以尝试切换到JNA作为替代方案。

答案 1 :(得分:0)

我做了一些测试,似乎与线程有关。当我在loadLibrary调用中放置一个断点时,它不会进入下一步。在我重新激活应用程序中的其他线程后,它才会进入下一步。我无法确定这是一个java bug还是一些线程问题。我正在使用JDK1.6.0_11。

如果将来有人遇到同样的问题,请检查线程问题。