如何限制.net / mono进程的内存大小?



假设你有一个用c#编写的应用程序(单进程)

默认情况下,应用程序分配了大量的虚拟内存,远远超过了它所需要的(例如,常驻内存约为10mb,而虚拟内存约为几GB)。

在Java中,可以使用java -mx128m

来限制这个选项。

我怎么能做同样的。net/mono应用程序?附带的问题是:是否有可能强制/更改GC选项以始终保持尽可能低的内存使用(尽可能快地收集,而不是当系统内存耗尽时)

基本上,我的目标是创建一个内存占用最小的。net应用程序

编辑:为了使它更清楚,我插入这个场景,鉴于几乎每个。net应用程序似乎都有类似的问题:

我运行一个monodevelop,这是mono下的c#应用程序-它消耗1800 MB的虚拟内存,而它只使用291 MB的常驻内存。这意味着应用程序只使用了不到300mb的内存,但由于未知的原因,它要求使用1800MB内存。这就是我想要发现的原因,以及如何防止它发生的方法。

对于大多数用户来说,这可能不是问题,但是当任务受虚拟内存限制时,在SGE等集群上运行的应用程序可能会出现问题。

Mono像java一样有几个标志用来设置内存上限。例如,当我运行集群作业时,我设置了以下环境变量。

setenv MONO_GC_PARAMS max-heap-size=8G

你可以在这个问题中看到更多的选项:

Mono GC max-heap-size没有记录。在生产中使用安全吗?

最新更新