memory泄露分析方法(native篇)

这篇具有很好参考价值的文章主要介绍了memory泄露分析方法(native篇)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

#本文介绍native泄露分析方法#

Native泄露非常难以治理,因为系统Native内存可共享的,不像JavaHeap内存是私有的

捕捉泄露:测试每天从monkey中筛选出内存超标的app,

从dumpsys_meminfo_pid看native heap大,我们采用几种工具可以找到泄露调用栈:

  1. Androidstudio:captrue native heap (抓取时长:600s (抓取方式 AndoridStudio分析内存   注意:有的车机系统不稳定:大多数无法抓取,偶尔又可以抓) 适用于实时抓取

  2. perffeto native内存 (抓取时长:60s  适用于实时抓取

  3. raphael (抓取时长:无限制(适用于压测,提前启动raphael

  4. 申请和释放的地方打印日志,日志成对出现才证明没有泄露

上述工具使用方法网上有详细介绍,请大家自行学习,使用时遇到任何疑问可私信我!

技巧:

从trace中没找到原因,不要慌!

下一步:恢复现场,从日志或摄像机记录下这段时间的录像,尝试复现,据经验,如果找到必现路径,100%可找到原因,我们要胸有成竹!

业内各种Native工具的使用情况:

名称 原理 项目 备注

matrix

基于PLT hook,hook malloc和free https://github.com/Tencent/matrix  https://github.com/iqiyi/xHook/blob/master/docs/overview/android_plt_hook_overview.zh-CN.md

raphael

长时间抓取

https://github.com/bytedance/memory-leak-detector

https://jidudev.com/jian.lang/native-memory-leak-detector/-/tree/master/native-leak-library

Jidu 优化过的raphael:优化点(去掉无用代码,增大cache为1G)

perffeto

无法长时间抓取

perfetto-trace抓取

Androidstudio

无法长时间连续抓取,但比perffeto抓取时间要长

 AndoridStudio分析内存

抓取时长:无限制(抓取方式  https://jidudev.com/jian.lang/native-memory-leak-detector/-/tree/master/native-leak-library  适用于压测,提前启动

各家自研方案

在申请和释放对象的地方把对象加入到全局链表中,或简单一些就在申请,释放的地方打印相同的日志

LeakTracer 修改编译、链接流程,再libc链接之前,先链接到LeakTracer额内存分配函数(new、delete、malloc、free) https://github.com/fredericgermain/LeakTracer https://github.com/wangshengyang1996/AndroidLeakTracer

  LeakTracer原理如图:

memory泄露分析方法(native篇),Android性能优化,性能优化,memory文章来源地址https://www.toymoban.com/news/detail-789762.html

接下来分析下项目中常见的泄露Case:  

到了这里,关于memory泄露分析方法(native篇)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android性能优化系列-腾讯matrix-IO监控-IOCanaryPlugin源码分析

    作者:秋去无痕 matrix 对io的监控包括四个方面 监控在主线程执行 IO 操作的问题 监控缓冲区过小的问题 监控重复读同一文件 监控内存泄漏问题 IOCanaryPlugin,内部由IOCanaryCore完成真正的操作。 根据配置进行hook的安装 取消hook 底层hook安装包函几个步骤,加载so,设置hook内容,

    2024年02月09日
    浏览(65)
  • JavaScript中的数据缓存与内存泄露:解密前端性能优化与代码健康

    ​🌈个人主页:前端青山 🔥系列专栏:JavaScript篇 🔖 人终将被年少不可得之物困其一生 依旧 青山 ,本期给大家带来JavaScript篇专栏内容:JavaScript-数据缓存与内存泄露 目录 说说你对事件循环的理解 一、是什么 二、宏任务与微任务 微任务 宏任务 三、async与await async await 四、

    2024年02月03日
    浏览(47)
  • Unity 内存性能分析器 (Memory Profiler)

    安装有两种 方式一: add package : com.unity.memoryprofiler 方式二: From Packages : Unity Registry 搜索 Memory Profiler 打开:Windows - Analysis - Memory Profiler 打开MemoryProfiler界面,可以链接真机检测,也可以在Editor检测。 点击Capture 保存当下帧的内容。 Capture 完毕之后,会保存本地一个镜像 :

    2024年02月03日
    浏览(49)
  • 【Android内存优化】内存泄露优化之强引用变弱引用完全详解

    内存空间使用完毕后无法被释放的现象,对于还保持着引用, 该内存不能再被分配使用,逻辑上却已经不会再用到的对象,垃圾回收器不会回收它们。 所以逻辑不再使用的对象,需要释放强引用,以便GC进行回收。 JVM 垃圾回收原理,点击进入 常见Handler 写法 This Handler clas

    2024年02月08日
    浏览(34)
  • android studio内存分析之Memory profiler的使用

    Android Studio中内存分析工具Memory profiler的使用 参考文章 1. 打开Memory Profiler 有两种方式打开,第一种通过标题栏打开: 第二种通过下方菜单栏打开 2. 工具使用 打开后是这样的: 打开后,点击 + 号,选择自己包名 选择完成后,就会创建你项目的SESSIONS界面: 如果想删除这个

    2024年02月05日
    浏览(33)
  • 记一次Native memory leak排查过程

    路由计算服务是路由系统的核心服务,负责运单路由计划的计算以及实操与计划的匹配。在运维过程中,发现在长期不重启的情况下,有TP99缓慢爬坡的现象。此外,在每周例行调度的试算过程中,能明显看到内存的上涨。以下截图为这两个异常情况的监控。 TP99爬坡 内存爬坡

    2024年02月11日
    浏览(35)
  • Android 内存分析(java/native heap内存、虚拟内存、处理器内存 )

    1.jvm 堆内存(dalvik 堆内存) 不同手机中app进程的 jvm 堆内存是不同的,因厂商在出厂设备时会自定义设置其峰值。比如,在Android Studio 创建模拟器时,会设置 jvm heap 默认384m , 如下图所示: 当app 进程中java 层 new 对象(加起来总和)占用的堆内存达到jvm heap 峰值时,就会抛出OOM 。

    2024年02月14日
    浏览(36)
  • Android 性能优化——APP启动优化

            首先在《Android系统和APP启动流程》中我们介绍了 APP 的启动流程,但都是 FW 层的流程,这里我们主要分析一下在 APP 中的启动流程。要了解 APP 层的启动流程,首先要了解 APP 启动的分类。 冷启动         应用从头开始启动,即应用的首次启动。需要做大量的工

    2024年04月12日
    浏览(32)
  • Android 性能优化系列:启动优化进阶

    应用的速度优化是我们使用最频繁,也是应用最重要的优化之一,它包括启动速度优化、页面打开速度优化、功能或业务执行速度优化等等,能够直接提升应用的用户体验。 大部分人谈到速度优化,只能想到一些零碎的优化点,比如使用多线程、预加载等等,没有一个较为体

    2024年02月13日
    浏览(28)
  • Android复杂UI的性能优化实践 - PTQBookPageView 性能优化记录

    作者:彭泰强 要做性能优化,首先得知道性能怎么度量、怎么表示。因为性能是一个很抽象的词,我们必须把它量化、可视化。那么,因为是UI组件优化,我首先选用了 GPU呈现模式分析 这一工具。 在手机上的开发者模式里可以开启 GPU呈现(渲染)模式分析 这一工具,有的

    2024年02月14日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包