答案 0 :(得分:1)
并非浏览器分配的每一位内存都由堆上分配的ECMAScript对象使用。在堆栈上还分配了ECMAScript对象,ECMAScript运行时本身,下载的资源(HTML,CSS,ECMAScript,SVG,PNG,GIF,JPEG,...),DOM对象,显示树,显示缓冲区,缓存,浏览器本身等。
此外,转储堆只会转储活动对象,而不是垃圾,并压缩堆,所以即使是" live"堆单独将比堆转储大,因为实时堆还包含尚未被垃圾收集的死对象,以及" hole"自由记忆。
tl; dr :堆转储只包含紧密排列在一起的活动对象。 真正的堆还包含死对象和漏洞,此外还有很多东西,而不是ECMAScript堆。