![]() |
1
4
我必须在生产环境中这样做,在sunjvm上它是坚如磐石的。 基本上,如果您从不同的类加载器加载库,那么它将加载库的不同副本。就这么简单。 我不建议你这样做,除非你真的不得不。。。但它确实有用。
本质上,这涉及到编写一个类加载器
然后安排使用相关的类加载器加载类的实现。。。
那种事。。。。。 |
![]() |
2
1
我不知道在windows中如何加载DLL的细节,但我的直觉告诉我,同时加载重叠的库肯定不安全。但如果你先卸下第一个,可能会。
|
![]() |
3
1
这是不安全的,执行起来相当混乱。对于不同版本的dll,可能有不同的类加载器。您必须确保类加载器是垃圾收集的,以确保dll已被卸载。(见 Java JNI - DLL Unloading ) 过去,我们通过编写一个轻量级java中介进程来解决这个问题,该进程处理用户的请求,并使用请求的dll版本创建一个新的子java进程。当用户请求不同的版本时,中介会关闭现有的子版本,并生成具有不同库路径的新版本。这种方法很有效。唯一的缺点是启动新jvm所需的时间,但只有当您频繁地请求版本切换时,这一点才会明显。 |
|
user29759326 · 如何返回递归函数中的最后一个值? 5 月前 |
|
malife89 · 将java中的字符串读取为正确的日期格式 5 月前 |
![]() |
Tim · 在java中,有没有更快的方法将字节数组写入文件? 5 月前 |
![]() |
rudraraj · java中未声明最终变量 6 月前 |
![]() |
Bala Ji · 以下BFS的实施效率如何? 6 月前 |