前言
本文参考 腾讯bugly陈其锋 大佬的文章实现的
原理
1.hook住free方法
2.先获取自己保留的内存的大小,如果将要达到自己设置的内存阈值,则释放掉一些内存
如果没有达到阈值,则判断当前要释放的内存大小是否小于所剩内存,如果超出则走free方法
如果没有超出,则判断是否是OC类和是否是已经在运行时环境中已注册的所有类里面
如果不是则走free方法
如果是,则内存上填充0x55,在将自己定义的僵尸类的isa赋值过去,最后记录原来的类
3.因为free方法是要释放内存,所以我们把这块内存指向我们的僵尸对象是没有问题的,但同时要考虑内存的问题,所以在内存紧张的时候,我们要释放掉一些内存。
网友评论