下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【移动应用开发技术】解决AndroidNative内存泄漏系统化的示例分析
一、栈回溯加速/upload/information/20200623/125/118061.jpgtypedef
struct
{
void*
stack[MAX_TRACE_DEEP];
int
current;
}
thread_stack_t;static
pthread_once_t
sBackTraceOnce
=
PTHREAD_ONCE_INIT;
static
void
__attribute__((no_instrument_function))
destructor(void*
ptr)
{
if
(ptr)
{
free(ptr);
}
}
static
void
__attribute__((no_instrument_function))
init_once(void)
{
pthread_key_create(&sBackTraceKey,
destructor);
}get_backtrace_info()
{
thread_stack_t*
ptr
=
(thread_stack_t*)
pthread_getspecific(sBackTraceKey);
if
(ptr)
return
ptr;
ptr
=
(thread_stack_t*)malloc(sizeof(thread_stack_t));
ptr->current
=
MAX_TRACE_DEEP
-
1;
pthread_setspecific(sBackTraceKey,
ptr);
return
ptr;
}void
__attribute__((no_instrument_function))
__cyg_profile_func_enter(void*
this_func,
void*
call_site)
{
pthread_once(&sBackTraceOnce,
init_once);
thread_stack_t*
ptr
=
get_backtrace_info();
if
(ptr->current
>
0)
ptr->stack[ptr->current--]
=
(void*)((long)call_site
-
4);
}
void
__attribute__((no_instrument_function))
__cyg_profile_func_exit(void*
this_func,
void*
call_site)
{
pthread_once(&sBackTraceOnce,
init_once);
thread_stack_t*
ptr
=
get_backtrace_info();
if
(++ptr->current
>=
MAX_TRACE_DEEP)
ptr->current
=
MAX_TRACE_DEEP
-
1;
}
}/upload/information/20200623/125/118062.jpgget_tls_backtrace(void**
backtrace,
int
max)
{
pthread_once(&sBackTraceOnce,
init_once);
int
count
=
max;
thread_stack_t*
ptr
=
get_backtrace_info();
if
(MAX_TRACE_DEEP
-
1
-
ptr->current
<
count)
{
count
=
MAX_TRACE_DEEP
-
1
-
ptr->current;
}
if
(count
>
0)
{
memcpy(backtrace,
&ptr->stack[ptr->current
+
1],
sizeof(void
*)
*
count);
}
return
count;
}/upload/information/20200623/125/118063.jpg/upload/information/20200623/125/118064.jpg/upload/information/20200623/125/118065.jpg/upload/information/20200623/125/118066.jpg二、体系化/upload/information/20200
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 浅谈普通钢轨绝缘接头的整治
- 2023年开工第一课试题答案
- 部编人教版四年级数学上册期末测试卷(汇编)
- 部编人教版五年级语文上册期末模拟考试附答案
- 新部编版四年级道德与法治(上册)期末试卷及答案(必考题)
- 大众创业万众创新工作总结做法
- 部编人教版八年级数学上册期末考试卷及答案【全面】
- 部编版六年级上册语文期末考试卷【带答案】
- 2022年五年级数学(上册)期末试卷及参考答案
- CHT 8002-1991 测绘仪器防霉、防雾、防锈
- 2023学年完整公开课版双螺旋机构
- 2022年广东省广州市小升初英语模拟试卷及答案解析
- 航线考试个人总结必背
- 椎基底动脉供血不足临床路径
- 2023年上海高考英语卷(精校版)
- 榆林市数字经济产业发展概况及未来投资可行性研究报告
- 2022年北京大学计算机学院招聘笔试备考题库及答案解析
- GB/T 21733-2008茶饮料
- GB/T 14148-1993光学玻璃眼镜片毛坯
- GB 31645-2018食品安全国家标准胶原蛋白肽
- GB 13614-2012短波无线电收信台(站)及测向台(站)电磁环境要求
评论
0/150
提交评论