Dim*_*maK 3 .net c# heap garbage-collection memory-management
我在我的一本大学书中遇到了一个令人困惑的问题:在那里声明"堆不是静态的,可以根据需要通过从操作系统请求更多内存来增长".
所以我很困惑的是:假设我运行我的应用程序,并在堆上分配对象.在某些时候,应用程序内存不足:现在发生了什么?
根据我的理解,Gc(垃圾收集器)开始并开始它的标记和扫描操作.我想知道不管怎样,而不是通过CLR调用Gc,堆是否有可能从操作系统请求更多内存?
我读到在C++语言中,有一种方法可以实现这一点,但在C#.Net Framework 4.5中是否可行?
.Net中的堆是内存的一部分,出于实际目的,32位进程最大可达1.5GB,64位无限(再次出于实用目的),它确实会根据需要从内存中请求内存.操作系统.但是,由于过多的碎片和大量分配的使用,它可能会耗尽内存 - GC不会压缩大对象堆.
当你在C++中实现它时,你可以完全控制你想要如何制定内存分配的策略,在.NET中为你完成,而你几乎没有说明如何做到这一点,即使在大多数情况下它做得很好工作.