Skip to content

YoungTr/Swan

Repository files navigation

Swan

关于 JNI 和 APM 需要了解的基础知识

前段时间在学习 JNI 和性能优化相关的知识,这里面涉及的点真的是太多了。

  • C/C++ 、操作系统基础知识
  • 如何检测 Native Crash ?使用信号需要注意什么?如何获取函数堆栈信息?
  • 如何 Hook 系统函数?比如发生 ANR 时如何获取系统日志信息?
  • 如何绕过系统限制调用系统方法?比如 KOOM 是如何实现暂停和恢复线程的?

很多优秀的开源库已经实现了上述功能,如 xCrash、xHook、xDL(蔡克伦🐮🍺)、KOOM、Matrix 等。实际开发中,我们可以直接拿来用,但是还是很有必要学习了解其中的基础知识及其原理。这样才能得心应手,或者二次开发自定义功能。

下面总结了一个大纲,如有遗漏后面会补充,接下来就是慢慢完善,希望有更多的人一起学习交流,也希望能给学习 JNI 和性能优化的小伙伴提供一些帮助,少走一些弯路。

一、C/C++ 基础

第13章 高级指针话题

C 陷阱与缺陷

C 专家编程

C++ Primer 中文版(第 5 版)

Unix环境高级编程(第三版)

二、 JNI 基础

JNI(一)JNI 访问 Java 中的成员变量和方法

JNI(二)本地C代码创建Java对象及引用

JNI(三)JNI 静态注册与动态注册

JNI 参考资料

三、so 相关

静态链接

动态链接

目标文件格式

自己实现一个动态链接库

如何 Hook 系统函数

虚拟内存

四、APM 专项

崩溃优化

内存优化

卡顿优化

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published