Skip to content
阅读进度

如何理解Java 堆、PSS 与进程内存? ​

返回 Java 与并发 目录

标准回答 ​

先分解Native heap、图形/缓冲、映射文件、线程栈、共享页和Swap等部分,而不是继续只抓Java对象。Bitmap像素、JNI库和图形资源的归属与Android版本、实现及统计方式有关。

使用dumpsys meminfo看大类趋势,在权限允许时查看smaps_rollup或smaps,结合Native分配采样与Surface/图形资源数量。如果是共享页变化,PSS的分摊也会改变,不一定意味着本进程新增了等量对象。

固定场景多次进入退出,等待资源完成释放后再比基线与增长斜率。单个PSS快照较高不足以证明泄漏;持续不回落且对象生命周期异常才值得继续确认。

追问与回答 ​

为什么RSS会大于PSS ​

RSS把驻留共享页完整计入本进程,而PSS按共享者分摊,所以共享较多时差异明显。

参考资料 ​

内容来源 ​

用完整回答理解机制,用真实证据解释项目。