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

时间:2012-03-12 18:47:59

标签: java memory-management dll java-native-interface

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

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

(我们正在谈论Windows Server 2008和Java 1.6,如果有类似的细节。)

1 个答案:

答案 0 :(得分:5)

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

将DLL加载到进程中。

因此,当JVM [process]终止 all 时,操作系统将回收内存(包括DLL分配的内存)。

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

快乐的编码。