Advertisement

安卓逆向的NDK内存管理

阅读量:

一:内存管理

在JNI中进行内存管理和分配是一个核心内容,在涉及Java与C++对象交互的时候显得尤为重要

1. 局部引用管理

  • 动态绑定引用来实现Java与JNI交互:在JNI环境中,在调用Java方法时会生成动态绑定的本地引用。
    • 主动管理本地引用来避免溢出问题:当这些引导向对象或资源释放后会被系统回收。
      注意事项:
      在长时间运行的本地方法中可能会导致本地引
      引用表超出容量。
    • 通过函数实现主动删除冗余引用来优化资源使用效率
      为了更好地管理和维护代码,在必要时可以主动管理这些本地引
      引,并通过调用DeleteLocalRef函数来清除不再需要
      的本地引
      引。
复制代码
    jobject localRef = env->NewObject(...);
    // 使用 localRef
    env->DeleteLocalRef(localRef); // 手动删除

2. 全局引用

  • 全局引用:如果需要在多个JNI调用之间共享对象,则能够实现对共享对象的访问。
  • 创建全局引用:该方法能够被用来创建一个持续性的对象引用。
  • 删除全球引用:该方法能够被用来将一个已存在的对象引用来其归宿处并释放资源。
复制代码

全部评论 (0)

还没有任何评论哟~