gpt4 book ai didi

java - 将对象的地址传递给 JNI 和 JNI 方法应填充该传递对象的字段

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

我想传递一个java对象的地址,JNI方法应该填充所传递对象的字段。1. java代码传递给定的对象引用。 JNI 方法应该能够缓存这个对象。这是一次性通话。2. 然后,java 对象使用不同的参数重复调用工作 native 方法,并且 JNI 每次都应该能够填充缓存对象的字段。尽管它填充了相同的缓存对象,但它除了 void 之外不返回任何内容。3. 调用#work原生方法后的java每次都使用相同的对象引用(在init期间传递)并获取引用对象的更新字段。4、works方法在一秒内被频繁调用(不止一次)。

讨论设计、涉及的风险等以及任何建议,高度赞赏。注意:不太强调不使用 JNI,已经存在很多线程。更重要的是给定的 JNI,垃圾收集的风险,使用什么样的引用(全局的,弱的)以及这个设计是好还是坏以及如何做得更好等等?

期待更多回复

最佳答案

使用您当前的设计:

  1. 使用env->NewGlobalRef获得对该对象的永久引用。使用env->GetObjectClass获取类(class)ID。使用env->GetFieldID要检索字段 ID,请缓存它们。

  2. 使用env->Set<Type>Field使用对象引用和记住的字段 ID。

我建议在每次调用中传递对象,缓存引用并没有多大好处。

关于java - 将对象的地址传递给 JNI 和 JNI 方法应填充该传递对象的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5071672/

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