V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
mmc0914
V2EX  ›  问与答

关于安卓的 memory profiler

  •  
  •   mmc0914 · 2019-03-06 12:58:07 +08:00 · 832 次点击
    这是一个创建于 2125 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近在做一个项目(学校的),主要是优化安卓在 non-valatile memory 下的性能。两个教授一致认为先写个 profiler 出来比较好,分析下主流 app 的内存访问状态。需求大概就是 objects allocation/deallocation 和 memory read/write。我是属于从来没用过安卓、从来没做过安卓开发的这么一个背景。目前的安卓选择的是 AOSP 8.1.0_r52,在 Nexus6P 上调试。

    • 关于 objects allocation/deallocation,有源码的话,Android Studio Profiler 可以做到,但是直接下载下来的 APK 就只能做一个 heap dump 看看有哪些 allocation。不够细致。
    • 关于 memory read/write 这个似乎市面上没有 profiler 能提供。

    目前的计划是魔改安卓的 runtime,就是 instrument JIT/AOT/interpreter。读了几个星期的代码了,也尝试过很多方案,但是从打出的 log 来看这个 instrumentation 很不完整,主要原因应该是还不够了解安卓的运行时状态,JIT/AOT/interpreter 似乎都在运行,代码跑着跑着就不知道跑到哪里去了。

    另外现在也没有一个趁手的 debugger,不清楚怎么才能 debug 安卓的源代码。很不清楚安卓系统内部的状态。

    退一万步来说,如果可以把 JIT/AOT 全都关掉,只用解释执行的话,也能得出些有用的信息,似乎有相关的 system properties 可以开关这个,但是也找不到具体怎么去设置。

    各位大佬有什么相关的建议嘛?

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2631 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 08:00 · PVG 16:00 · LAX 00:00 · JFK 03:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.