我是外行菜鸟,希望大侠能讲的清楚一点。原话是这样的:
/STACK:[reserve][,commit]
reserve参数用于设定系统应该为线程堆栈保留的地址空间量。默认值是1MB。Commit参数用于设定开始时应该承诺用于堆栈保留区的物理存储器的容量。默认值是1页。我创建了1000个线程,但资源管理器中看内存使用里只增加了100M左右,是怎么回事?
如果我的计算机只有512M内存,跑一个1000个线程的程序,能稳定的工作吗?
 

解决方案 »

  1.   

    程序占用的虚拟内存大小呢?
      

  2.   

    你需要1000个线程吗? 最大线程数默认不是64吗??
      

  3.   

    要注意区分虚拟内存和物理内存。
    程序中分配的都是虚拟内存,虚拟内存只有在使用时才会映射到物理内存中,使用后随时可能交换到分页文件里面而释放出物理内存。资源管理器中看到的是进程占用的物理内存大小,所以1000个线程只有100MB(如果你把程序最小化应该还会更小)。
      

  4.   

    就是线程默认保留的堆栈
    但是不会实际分配,只在线程用到的时候才进行实际分配
    它的意思是先标记一下,把这个内存从你的总虚拟内存中划出去
    即使你实际没有使用,但是这个标记过的内存块还是不能使用
    被从你的2GB可分配内存中减掉了