来自Java背景,我习惯于告诉JVM的最大堆大小应该是什么。如果正在运行的程序试图吞下超过允许的范围,并且垃圾回收器无法释放更多的资源,则将抛出OutOfMemoryError,并且一切都将破裂。因此,在Java中设置最大堆大小很重要。
这是否适用于.net? 您可以设置堆大小限制吗? CLR是否会一直增加其堆,直到达到机器的物理极限?还是由于某些微妙的原因,.NET出现了问题,我的Java眨眼程序阻止了我的视线?
最佳答案
除非您自己在进程中托管CLR,否则无法在.Net中设置最大堆大小。
编辑:
要控制CLR的内存分配(包括最大堆大小),您需要使用托管api来托管clr,特别是使用“内存管理器接口(interface)”,一些入门信息可以在这里MSDN Magazine, column CLR Inside Out : CLR Hosting APIs找到。
编辑:回答您的问题,为什么您通常不想控制内存分配或最大堆大小,但是如果您在编写像SQL Server或IIS或类似的应用程序时间的应用程序,那么您将有充分的理由来控制内存,特别是避免分页,否则CLR本身和OS已经为您做得很好,剩下的就是确保您的应用程序使用最少的内存。使事情顺利进行的资源。
关于.net - 我可以(而且我想)在.net中设置最大堆大小吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/301393/