java - 当 Java 进程退出时,JNI DLL 使用的内存是否会返回?

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

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

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

(如果此类细节很重要,我们正在讨论 Windows Server 2008 和 Java 1.6。)

最佳答案

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

DLL 被加载“到”进程中。

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

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

祝你编码愉快。

关于java - 当 Java 进程退出时,JNI DLL 使用的内存是否会返回?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9672977/

相关文章:

在 Eclipse 中调试时出现 javax.naming.NameNotFoundException

java - getCursor() 在我的 actionListener 中不起作用

ios - Xcode 中分析分配的新功能

c# - MEF 插件找不到引用的库

c# - 在 C# 运行时加载 dll

c++ - 如何让 PostgreSQL 加载依赖于 DLL 的 C 模块?

Java 循环外对象引用

java - 如何通过 firebase API 获取 Nest 的授权?

c++ - ".exe"已触发断点

c++ - 如何在 C++ 的全局字符数组中动态分配类的实例?