如果您以Java JNI分配的本机代码中的内存泄漏,会发生什么
What happens if you leak memory in native code allocated from Java JNI?
我使用JNI调用分配内存的C方法。我有释放内存的方法,但是如果未调用这些方法,则停止JVM时分配的内存会发生什么?
如果您卸载已加载的库(请参阅Java JVM卸载库(DLL)),"泄漏"内存会发生什么?
停止JVM(被杀死或退出),操作系统将使用该过程回收所有相关的内存。其中包括本机代码中分配的任何内存。
将发生与普通C
代码发生的所有相同的事情。除非SMTH会收回,否则此内存将被泄漏。对于大多数现代操作系统,这意味着当过程退出时将释放资源。卸载JVM一无所有。
避免此问题的常用方法是使C分配的内存与某些Java对象密切相关,并在该JAVA对象上具有最终确定器,该Java对象称为JNI方法,以释放内存存储器。这样,垃圾收集器和库的用户就不需要记住清理JNI方法来清理事情。
相关文章:
- FFMPEG,C++,内存泄漏,我做错了什么?
- 关于内存泄漏,我有什么不了解的
- 内存泄漏会发生什么
- 内存泄漏,访问释放内存和双重免费之间有什么区别
- 除了使用 new 之外,什么会导致内存泄漏?(C++)
- 如果您以Java JNI分配的本机代码中的内存泄漏,会发生什么
- 内存泄漏的长期后果是什么?
- C++/CLI代码中的内存泄漏.我做错了什么
- C++:这个代码有什么问题吗?它编译得很好,但人们告诉我会有内存泄漏
- 检测"内存泄漏"时,瓦尔格林德的真实指针是什么?
- 使用谷歌测试框架(不是窗口)检测内存泄漏的标准做法是什么?
- 在构造函数中引发异常时防止内存泄漏的最佳做法是什么?
- c++中的回调地狱是什么?为什么它会泄漏内存?
- 当您泄漏"device"和"device context"时会发生什么 - 特别是 d3d?
- 是什么导致我的内存泄漏与OpenCV
- DirectX 9到11 OpenSharedResource正在疯狂地泄漏内存.我做错什么了吗?
- 我认为我有内存泄漏.现在什么
- c++,是否泄漏?什么是可以做的
- 什么调试器可以检查c++代码是否存在内存泄漏
- 是什么导致了这些内存泄漏