JNI应用程序的本机代码编译成加载到进程地址空间中的共享库或可执行程序。
JNI规范要求各本机代码至少能创建16个本地引用。
一个常见的JNI缺陷是调用JNI方法而未在调用完成后测试异常。
可以使用其中一款工具重新编译您自己的JNI库,以跟踪代码中的本机内存泄漏。
一个线程必须附加到虚拟机,在任何其他JNI可调用之前。
建议在应用服务器上使用JNI时不要放宽EJB限制,因为这可能会损害它的稳健性。
有些API只能从C代码中调用,必要时通过使用JNI或其他耦合设施(couplingfacilities)调用。
EJB的技术规定禁止使用JNI,因为它损害了应用服务器的稳定性、安全性和可伸缩性。
其目标是帮助您认识到并避免它们,以便您可以编写安全、高效、性能出众的JNI代码。
这将生成对已调用的本机方法以及它们发起的JNI回调的跟踪。
IBM的JVM实现包括开启自动JNI检测的选项,其代价是较慢的执行速度。
不支持Java本机接口(JNI)、原始本机接口(RNI)和远程方法调用(RMI)。
只要有可能就应该将本机操作集合在一起,以减少JNI调用的数量。
注意,提供JNI的完整描述不在本文范围之内。
如果应用服务器支持JNI,那么JNI访问中的一个错误都会使整个应用服务器停止运行!
使用JNI代码本地处理异常,尽管有时不可避免地会导致性能下降。
JNI允许运行在JVM中的Java代码与以其他编程语言编写的应用程序和库实现互操作。
随后,本教程介绍了Java本地接口(JNI),这是使用NDK时您会感兴趣的一种技术。
Pinned对象是在堆压缩过程中由于JNI(Java本机接口)对其进行访问而无法移动的那些对象。
它会在发现未符合规范的代码时发出警告,并且可以帮助您确定常见的JNI缺陷。
实现JNI的JVM可以在JNI接口指针指向的区域中分配和存储本地线程数据。
不过,JVM与本机代码之间的通信通常很慢,因此,太多的JNI调用可能会降低性能。
如果您有自己的JNI库,尝试完全禁用它们,以确定它们是否会造成泄漏。
JDIC组件代码本身指出正在哪个操作系统上运行应用程序,并调用适当的JNI函数。
给出了关于JNI特性及编程技术的教程和详细描述。
类还在特定于线程的位置保存一个JNI环境指针。
JNI将接口指针值放在由第一个参数指定的位置。