Java进程退出时是否返回JNI DLL使用的内存?

mat*_*tpe 2 java dll java-native-interface memory-management

我继承了一个带有DLL依赖(JNI)的小型Java项目的维护.使用一组参数调用java程序,这些参数被发送到DLL(并进一步发送到第三方API).输入和输出是简单的字符串.

DLL使用的内存是从java进程堆中分配的内存吗?因此,这是否意味着当java程序退出时,此过程中的所有内存(包括DLL使用的内存)都会返回到系统?

(我们正在谈论Windows Server 2008和Java 1.6,如果有这样的细节.)

小智 5

操作系统负责在进程终止时清理进程分配的所有内存.

DLL被"加载"到进程中.

因此,当JVM [process]终止所有内存 - 包括DLL分配的内存 - 将由OS回收.

请注意,这会排除外部资源,例如来自已启动但尚未终止的其他[子]进程的资源或在其他地方仍具有打开句柄的共享资源,或者在OS控制之外的其他资源(例如分布式缓存).

快乐的编码.