ama*_*dib 2 java memory dll jvm classloader
我的理解是,它们是由 a.dlls
加载的,但是它们之后存储在内存中的哪里,并从非静态过程中调用?java.library.path
ClassLoader
System.loadLibrary()
System.load()
当调用System.loadLibrary()
或System.load()
函数时,ClassLoader
当前 Java 类的任务是查找所请求的 DLL(及其依赖项)并通知操作系统有关库的位置。它ClassLoader
本身不执行任何加载:此操作使用 Java 本机接口 (JNI) 库与操作系统进行通信,并告诉它在哪里查找所请求的库。
当调用 DLL 函数时,该函数被加载到Java VM 进程的地址空间中并在那里执行。该地址空间是操作系统分配给进程的内存块,并且与 Java VM 完全分开。因此,您的问题的答案是,Java VM 只是使用其给定的地址空间按需加载 DLL 函数,并通过 Java 本机接口执行它们。
资料来源:http ://www.webbasedprogramming.com/Tricks-of-the-Java-Programming-Gurus/ch30.htm