外观
如何理解Java 堆、PSS 与进程内存?
标准回答
先分解Native heap、图形/缓冲、映射文件、线程栈、共享页和Swap等部分,而不是继续只抓Java对象。Bitmap像素、JNI库和图形资源的归属与Android版本、实现及统计方式有关。
使用dumpsys meminfo看大类趋势,在权限允许时查看smaps_rollup或smaps,结合Native分配采样与Surface/图形资源数量。如果是共享页变化,PSS的分摊也会改变,不一定意味着本进程新增了等量对象。
固定场景多次进入退出,等待资源完成释放后再比基线与增长斜率。单个PSS快照较高不足以证明泄漏;持续不回落且对象生命周期异常才值得继续确认。
追问与回答
为什么RSS会大于PSS
RSS把驻留共享页完整计入本进程,而PSS按共享者分摊,所以共享较多时差异明显。
参考资料
内容来源
- Android 与 AI 工程 Wiki · 原条目
q052