System.Load(), LoadLibrary() 可以多次加载相同动态库吗?

jmppok 2013-11-26 10:31:47
System.Load(), LoadLibrary() 可以多次加载相同动态库吗?

比如我有一个JNI:
public class CPPInvoker
{
public CPPInvoker(String dllFullPath)
{
System.Load(dllFullPath);
}
public native int f(int val);
}

C++实现库为C.so;

将C.so拷贝两份,分别为/tmp/1/C.so 和 /tmp/2/C.so
CPPInvoker inv1 = new CPPInvoker("/tmp/1/C.so");
CPPInvoker inv2 = new CPPInvoker("/tmp/2/C.so");
CPPInvoker inv3 = new CPPInvoker("/tmp/3/C.so");

那么inv1,inv2,inv3在调用JNI方法时,调用的C++对象是同一个?inv1一个,inv2,inv3一个?又或者是分别对应不同的C++对象?

求指导?
...全文
1743 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
jmppok 2013-11-27
  • 打赏
  • 举报
回复
是的,理想状态是Load一次就可以了。 但我写的这个模块,可能会被多次调用。(不使用单例模式) 我想知道的是多次调用System.LoadLibrary();时: 会加载相应的动态库多少次?内存中有多少份?
teemai 2013-11-27
  • 打赏
  • 举报
回复
引用 6 楼 jmppok 的回复:
[quote=引用 3 楼 huxiweng 的回复:] 为什么要加载多次呢? 加载多次应该是没问题的,System.Load(), LoadLibrary() 这两个方法都是返回void。 看看API:http://docs.oracle.com/javase/7/docs/api/java/lang/System.html#loadLibrary%28java.lang.String%29
API看不出来啊???[/quote] Loads the system library specified by the libname argument. The manner in which a library name is mapped to the actual system library is system dependent. load到系统library中,一次就行了
jmppok 2013-11-27
  • 打赏
  • 举报
回复
引用 3 楼 huxiweng 的回复:
为什么要加载多次呢? 加载多次应该是没问题的,System.Load(), LoadLibrary() 这两个方法都是返回void。 看看API:http://docs.oracle.com/javase/7/docs/api/java/lang/System.html#loadLibrary%28java.lang.String%29
API看不出来啊???
jmppok 2013-11-27
  • 打赏
  • 举报
回复
因为我写的是一个组件,这个组件被上层调用。 上层可能会在多线程中多次调用这个组件。 我就想知道上次多次调用时: System.LoadLibrary();会加载相应的动态库多少次? 如果每次都是不同的,就不必考虑多线程问题,否则还得处理多线程。
___________小P 2013-11-27
  • 打赏
  • 举报
回复
理论上应该不可以吧 返回是void
teemai 2013-11-27
  • 打赏
  • 举报
回复
为什么要加载多次呢? 加载多次应该是没问题的,System.Load(), LoadLibrary() 这两个方法都是返回void。 看看API:http://docs.oracle.com/javase/7/docs/api/java/lang/System.html#loadLibrary%28java.lang.String%29
jmppok 2013-11-27
  • 打赏
  • 举报
回复
没有人知道吗?
jmppok 2013-11-26
  • 打赏
  • 举报
回复
顶一个。。。

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧