gpt4 book ai didi

jvm - JVM 如何处理 native 代码

转载 作者:行者123 更新时间:2023-12-01 01:37:35 26 4
gpt4 key购买 nike

考虑一个我必须从我的 Java 程序调用 C++ 代码的情况。 C++ 代码创建了数千个对象。这些动态对象存储在哪里?我怀疑在 JVM 堆中,因为 native 代码将成为与 JVM 相同进程的一部分。

如果是,Java 垃圾收集器线程的规则是否适用于 C++ 代码的对象?

最佳答案

对于第一个问题,C++ 将使用自己的运行时分配资源,这与 JVM 无关 - JVM 不知道此内存分配器中的任何事件。

对于第二个问题,Java垃圾收集器不会对C++分配的内存进行GC。您必须确保您的 Java 包装器启动内存释放。在 Java 对对象进行 GC 之前,运行时会调用 finalize()方法。默认的继承自 java.lang.Object 并且基本上什么都不做。您可以覆盖它并将其用作 Hook 来启动释放手动管理的内存。

关于jvm - JVM 如何处理 native 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/828837/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com