我是外行菜鸟,希望大侠能讲的清楚一点。原话是这样的:
/STACK:[reserve][,commit]
reserve参数用于设定系统应该为线程堆栈保留的地址空间量。默认值是1MB。Commit参数用于设定开始时应该承诺用于堆栈保留区的物理存储器的容量。默认值是1页。我创建了1000个线程,但资源管理器中看内存使用里只增加了100M左右,是怎么回事?
如果我的计算机只有512M内存,跑一个1000个线程的程序,能稳定的工作吗?
/STACK:[reserve][,commit]
reserve参数用于设定系统应该为线程堆栈保留的地址空间量。默认值是1MB。Commit参数用于设定开始时应该承诺用于堆栈保留区的物理存储器的容量。默认值是1页。我创建了1000个线程,但资源管理器中看内存使用里只增加了100M左右,是怎么回事?
如果我的计算机只有512M内存,跑一个1000个线程的程序,能稳定的工作吗?
程序中分配的都是虚拟内存,虚拟内存只有在使用时才会映射到物理内存中,使用后随时可能交换到分页文件里面而释放出物理内存。资源管理器中看到的是进程占用的物理内存大小,所以1000个线程只有100MB(如果你把程序最小化应该还会更小)。
但是不会实际分配,只在线程用到的时候才进行实际分配
它的意思是先标记一下,把这个内存从你的总虚拟内存中划出去
即使你实际没有使用,但是这个标记过的内存块还是不能使用
被从你的2GB可分配内存中减掉了