Deno 1.27.2中memoryUsage返回rss小于heapTotal的异常问询
Deno v1.27.2中
Deno.memoryUsage()返回的rss(驻留集大小)小于heapTotal异常问题 我们在所有基于Deno v1.27.2的应用中遇到一个异常:Deno.memoryUsage()返回的rss(驻留集大小)数值小于heapTotal。具体表现为:
- 该问题近几日才出现
- 部分应用启动初期rss值较高,随后会降至heapTotal以下
- 已在多应用、多设备、多开发者环境下复现,与所用框架无关
根据资料及Deno文档,我们的认知是:rss代表进程占用的RAM总内存,理论上应包含heapTotal、heapUsed以及调用栈等内存开销,因此rss数值不应小于heapTotal。
我们排查了Deno的Rust源码,发现其rss是通过以下函数获取:
pub fn total_physical_size(&self) -> usize { unsafe { v8__HeapStatistics__total_physical_size(self) } }
该函数实际是从V8引擎获取total_heap_size()的值。
我们通过以下代码采样内存数据,所有应用均得到一致的异常结果:
setInterval(() => { console.log(Deno.memoryUsage()); }, 500)
某应用的采样数据示例:
{ rss: 4423680, heapTotal: 4849664, heapUsed: 3894252, external: 29347 } { rss: 4423680, heapTotal: 4849664, heapUsed: 3906964, external: 33617 } ... { rss: 4423680, heapTotal: 4849664, heapUsed: 3882260, external: 25077 }
想请教:
- 是否有人遇到过或了解这个问题?
- 我们是否完全误解了rss的定义?
- Deno中的rss与Node.js中的rss是否存在定义上的差异?
内容的提问来源于stack exchange,提问作者mksnooty
相关产品推荐
相关产品推荐

