Git bash(sh.exe)否则占用很少的内存,但是当用CMD启动时 start sh.exe
命令,它创建一个需要3-700 MB内存的conhost.exe进程。
有趣的是 start cmd /k sh.exe
做同样的事情,但它创建了只需要8 MB的conhost进程。
为什么用“start”命令启动sh.exe会创建一个需要更多内存的conhost进程?
你是如何测量它所占用的内存量的?那你的“记忆”是什么意思?你的意思是物理内存(RAM)?
—
David Schwartz
@DavidSchwartz 任务管理器显示~300MB,Process Explorer显示~700MB(专用字节)
—
laggingreflex
那么,那不是物理记忆。然后简短的回答是,没有人关心这个价值是什么。只有物理记忆是稀缺的,通常人们不会费心去减少非稀缺资源的消耗。
—
David Schwartz
@DavidSchwartz我测量了资源监视器中的总RAM使用率,峰值和下降似乎相似。此外,当有10个这样的conhosts时,我的chrome会在一段时间后访问时暂停一段时间。我已经看到了一个改进,避免以我的问题中描述的方式启动conhosts(使用
—
laggingreflex
start cmd sh.exe
代替 start sh.exe
)。我的问题是 为什么 有什么区别?为什么conhost在做的时候会占用更多的内存(甚至只是虚拟) start sh.exe
做比较 start cmd /c sh.exe
答案就是我所说的 - 虚拟内存并不稀缺,所以人们不会费心去减少它的消耗。分配相当大的块是很常见的,以防以后需要它。在启动流程时尤其如此,因为在启动之前您可以执行一些操作,这些操作无法轻松完成。
—
David Schwartz