gpt4 book ai didi

java - 如何使用长内存地址调用 Java 方法?

转载 作者:行者123 更新时间:2023-11-30 04:11:43 26 4
gpt4 key购买 nike

假设我有一个 Java 中很长的内存地址,如果我知道该内存地址是一个函数指针,我如何调用该地址处的函数?

我对此感兴趣的原因是为了处理堆外对象。我要在直接字节缓冲区中创建对象,该对象不会受到 GC 的影响。这将允许我取消 GC 暂停时间,因为如果我不在堆上创建任何对象,GC 将永远不会运行。

最佳答案

在纯 Java 中你不会。这与 Java 的许多内容正好相反。您可以使用JNI来做到这一点如果你真的想的话。理想情况下,您应该更改您的设计,这样您就不需要这样做 - 在大多数情况下,这是一个相当奇怪的要求。

既然您已经编辑了这篇文章,而且您似乎基本上想要比虚拟机的垃圾收集器做得更好,我强烈建议您避免这种情况。这可能需要付出巨大的努力,并导致系统非常脆弱,每个环境都需要不同的二进制文件。无论如何,您都很难将堆外值用作真正的对象,因为此时 JVM 很可能会对数据做出各种假设。如果您只关心原始值,则始终可以使用一个大字节数组来充当“原始”存储,并使用适当的包装器代码在该数组中的数据和原始值之间进行转换......所有这些都无需 JNI。

关于java - 如何使用长内存地址调用 Java 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19453495/

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