Node.js中malloced_memory低于used_heap_size的原因是什么
核心原因:你对malloced_memory的统计范围假设错误,两个字段不存在包含关系
两个字段单位均为字节,不存在单位不一致的问题,真实统计规则如下:
used_heap_size:统计V8托管主堆中已经分配给对象的内存总大小,包含未被回收的垃圾对象。V8的主堆内存是直接通过mmap(类Unix系统)/VirtualAlloc(Windows系统)向操作系统申请的大块连续虚拟内存,不走常规malloc调用,所以这部分内存完全不会计入malloced_memory。malloced_memory:仅统计V8 runtime直接通过malloc类接口零散申请的、不在V8主堆管理范围内的内存,通常是V8内部临时小结构、Native绑定的零散内存申请等,本身总量就很小。
你提供的示例中malloced_memory为16384字节(16KB)属于正常数值,used_heap_size远大于malloced_memory是常态,反而如果malloced_memory数值异常偏高,往往意味着存在Native层的内存泄漏问题。
内容的提问来源于stack exchange,提问作者Lawrence Wagerfield
相关产品推荐
相关产品推荐

