zoukankan      html  css  js  c++  java
  • 关于Managed Thread Stack 内存占用

               CLR会通过VirtualAlloc预先提交整个栈,提交之后就立即占用物理空间(物理内存或磁盘)。也许你会发现查看内存占用的时候看起来并没有占用那么多内存,那是因为线程栈一般很少用到1M内存的全部,提交内存在未被使用之前并不会真正分配。看看我的内存截图:

     

    提交数内和已用内存并不相等,因为很多提交内存并未真正分配出去。

    那是不是就真的不占用内存了?看下面有看了3000个线程,在继续加就OutOfMemory了。

     

    看以看出虽然并没有使用完物理内存,但将物理内存“预订“下了,这块物理内存也无法干其他用了。

     

    看以看到真实分配了1G内存,而工作集只有56M。

    在这儿看来分配磁盘虚拟物理内存也是很有必要的,想我这样完全关闭磁盘虚拟地址就很大程度的浪费内存了。 

    在做full dump的时候dump文件往往要比实际Working Set 大,有时候出奇的大很多,尤其线程数多的进程,dump完了后内存占用也蹭的涨起来了,我想可能是dump了整个已提交地址空间。

    就算64下虚拟地址空间足够用,但物理地址空间是很有限的,还得控制一下提交量啊,别占着茅坑不拉屎,明明有内存还OutOfMemory。。。

  • 相关阅读:
    性能测试之-响应时间
    性能测试之-分类
    CSS 的基础语法
    linux之-mysql数据库约束3
    linux之-mysql数据库2
    linux安装mysql
    反向树状数组
    曼哈顿最小生成树
    最小生成树的性质
    CSA Round 84 Growing Trees
  • 原文地址:https://www.cnblogs.com/lulu/p/2591694.html
Copyright © 2011-2022 走看看