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

2021-05-23 21:50:13 +08:00
 zpxshl

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

5430 次点击
所在节点    Android
15 条回复
yitingbai
2021-05-23 22:00:46 +08:00
这个面试题太高级了吧, 感觉已经超出了普通 APP 开发者的知识范围了.
WngShhng
2021-05-23 23:42:00 +08:00
nuk
2021-05-23 23:48:33 +08:00
注入远程线程,fork 后再 dump,不过一个 android 进程能占多大内存,直接 dump 到 /tmp 是最省事的吧。。
zpxshl
2021-05-24 00:21:35 +08:00
@nuk 几百 m 到几 g,dump 到文件不会快到哪里去吧
nuk
2021-05-24 00:26:36 +08:00
@zpxshl 可是 dump 到 /tmp 是写到内存啊
zpxshl
2021-05-24 01:24:15 +08:00
@nuk 涉及到知识盲区了,我研究研究。。。
liuidetmks
2021-05-24 08:38:16 +08:00
这个不会是 "有个 bug 无法解决,找个面试的问问吧"

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

所以这个问题只能在内核级别(实现 copy-on-write 虚拟页面)或者 JVM 级别解决,问问题的人有水平的话想几分钟就知道,那还要问就是想白嫖你。
zpxshl
2021-05-24 23:38:09 +08:00
@billccn 所以答案就是 fork,,,自带 cow
LongYard
2021-05-25 11:50:37 +08:00
吓尿了。。。不会是应届吧。。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/778727

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX