V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zpxshl
V2EX  ›  Android

android 面试题 “设计个内存泄漏抓取框架,检测到泄漏时 dump 内存很卡,能怎样优化”

  •  
  •   zpxshl · 157 天前 · 2018 次点击
    这是一个创建于 157 天前的主题,其中的信息可能已经有所发展或是发生改变。

    大佬有思路吗? 我想是开条进程取去 dump ? 但是开进程能 dump 到吗。。。

    第 1 条附言  ·  156 天前
    和朋友讨论了下,大概就是 fork 子进程 dump 。
    卡顿是因为 dump 的时候需要暂停所有线程。
    15 条回复    2021-05-25 11:50:37 +08:00
    yitingbai
        1
    yitingbai   157 天前
    这个面试题太高级了吧, 感觉已经超出了普通 APP 开发者的知识范围了.
    nuk
        3
    nuk   157 天前
    注入远程线程,fork 后再 dump,不过一个 android 进程能占多大内存,直接 dump 到 /tmp 是最省事的吧。。
    zpxshl
        4
    zpxshl   156 天前 via Android
    @nuk 几百 m 到几 g,dump 到文件不会快到哪里去吧
    nuk
        5
    nuk   156 天前
    @zpxshl 可是 dump 到 /tmp 是写到内存啊
    zpxshl
        6
    zpxshl   156 天前 via Android
    @nuk 涉及到知识盲区了,我研究研究。。。
    liuidetmks
        7
    liuidetmks   156 天前
    这个不会是 "有个 bug 无法解决,找个面试的问问吧"

    面试问这个,大概率想白嫖你
    hongch
        8
    hongch   156 天前
    这是面内核开发岗?
    oxromantic
        9
    oxromantic   156 天前
    “很卡?我做过,不卡啊”
    zpxshl
        10
    zpxshl   156 天前 via Android
    @hongch 应用开发
    nicocho
        11
    nicocho   156 天前
    ..这移动应用开发 都卷成这样了...
    方便说下面试岗位薪资么
    zpxshl
        12
    zpxshl   156 天前 via Android
    @nicocho 薪资挺有吸引力的...
    billccn
        13
    billccn   156 天前
    这个题目很有问题的。如果应用可以继续跑,那它内存就在变化,你 dump 出来的可能是无效的。比如你 dump 过程中它正好 GC 了,把部分对象都挪了个窝,那你已经 dump 的部分里面的指针都可能是错的。不要说这还涉及 Java 内存模型中很多数据你是无法绕过 lock 直接异步读取的,强读的话可能会出现一个 64 位的值只写了一半的问题。

    所以这个问题只能在内核级别(实现 copy-on-write 虚拟页面)或者 JVM 级别解决,问问题的人有水平的话想几分钟就知道,那还要问就是想白嫖你。
    zpxshl
        14
    zpxshl   156 天前 via Android
    @billccn 所以答案就是 fork,,,自带 cow
    LongYard
        15
    LongYard   155 天前
    吓尿了。。。不会是应届吧。。。
    关于   ·   帮助文档   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2150 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 16:01 · PVG 00:01 · LAX 09:01 · JFK 12:01
    ♥ Do have faith in what you're doing.