全局引用
通过 NewGlobalRef 和 DeleteGlobalRef 方法创建和释放一个全局引用。
全局引用能在多个线程中被使用,且不会被 GC 回收,只能手动释放。
局部引用
通过 NewLocalRef 和 DeleteLocalRef 方法创建和释放一个局部引用。
局部引用只在创建它的 native 方法中有效,包括其调用的其它函数中有效。因此我们不能寄望于将一个局部引用直接保存在全局变量中下次使用(请使用全局引用实现该需求)。
我们可以不用删除局部引用,它们会在 native 方法返回时全部自动释放,但是建议对于不再使用的局部引用手动释放,避免内存过度使用。
扩展:弱全局引用
通过 NewWeakGlobalRef 和 DeleteWeakGlobalRef 创建和释放一个弱全局引用。
弱全局引用类似于全局引用,唯一的区别是它不会阻止被 GC 回收。
全局引用
通过 NewGlobalRef 和 DeleteGlobalRef 方法创建和释放一个全局引用。
全局引用能在多个线程中被使用,且不会被 GC 回收,只能手动释放。
局部引用
通过 NewLocalRef 和 DeleteLocalRef 方法创建和释放一个局部引用。
局部引用只在创建它的 native 方法中有效,包括其调用的其它函数中有效。因此我们不能寄望于将一个局部引用直接保存在全局变量中下次使用(请使用全局引用实现该需求)。
我们可以不用删除局部引用,它们会在 native 方法返回时全部自动释放,但是建议对于不再使用的局部引用手动释放,避免内存过度使用。
扩展:弱全局引用
通过 NewWeakGlobalRef 和 DeleteWeakGlobalRef 创建和释放一个弱全局引用。
弱全局引用类似于全局引用,唯一的区别是它不会阻止被 GC 回收。