gpt4 book ai didi

java - 垃圾收集器是否在从 C++ 创建的 JVM 中运行?

转载 作者:行者123 更新时间:2023-12-02 10:10:13 25 4
gpt4 key购买 nike

我有一个 C++ 代码库,其中我使用 JNI 创建一个 JVM,并偶尔与一个用 Java 实现的库进行交互。我很好奇,在这个用例中,Java 的垃圾收集器是否仍能可靠地运行和清理?
我在网上找到的大多数关于 JNI 的信息似乎都是关于“相反”的用例,人们通常似乎主要使用 Java 代码,有时通过 JNI 与 native 代码交互。对于这样的用例,我发现例如以下 online :

The automatic garbage collection of local references that are no longer in scope prevents memory leaks in most situations. This automatic garbage collection occurs when a native thread returns to Java (native methods) or detaches from the JVM (Invocation API). Local reference memory leaks are possible if automatic garbage collection does not occur. A memory leak might occur if a native method does not return to the JVM, or if a program that uses the Invocation API does not detach from the JVM.


我不确定在这种情况下“返回 Java”到底是什么意思。只是偶尔从 C++ 调用基于 Java 的方法就足够了,这是否已经算作“回归 Java”?如果没有,有什么方法可以确保垃圾收集器有机会在我的用例中运行?

最佳答案

使用 JNI 创建的 JVM 是 完整的 JVM ,包括 GC。
这样想:java通常用于运行 Java 程序的命令,不过是一个小的 JNI 程序,它创建一个 JVM,定位命令行上命名的类,并对 main(String[]) 进行静态调用。方法。

关于java - 垃圾收集器是否在从 C++ 创建的 JVM 中运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63905028/

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