C#是否有相当于java的-Xmx1024m开关,允许您增加虚拟机的内存分配?
答案 0 :(得分:10)
没有。在这方面,CLR处理内存分配与java非常不同。它将继续增加堆大小,没有上限(除了体系结构限制)。
在64位操作系统上,当针对x64时,CLR将继续允许进程分配内存,直至系统中可用的总内存。人工过程没有固定的上限。
在32位系统上,或者在针对x86时,实际上限往往介于1.2和1.6 GB之间。此时,您将开始遇到内存不足异常。 (理论上,它应该使用2GB,但CLR本身会占用一些空间,而它处理内存寻址的方式会导致在此范围内发生内存不足错误。)
编辑:这是一篇描述differences in how memory is handled in the JVM and the CLR的好文章。我认为JVM需要使用-Xmx
的主要原因是因为它不会将内存释放回操作系统。因此,它提供了一种限制程序内存消耗的方法。