我需要设置Mono使用的内存的上限。
根据blogs,可以使用参数max-heap-size
来限制内存使用量。
根据实验和according to the code,它确实做了我想要的。
但是,此选项isn't documented。
因此:在生产中依赖这个选项是否安全(或者它有缺点,我没有看到,例如:不保证在未来的Mono版本中仍然可用)?
答案 0 :(得分:6)
记录在案,这是获取文档的一种方法:export
无效MONO_GC_PARAMS
,开始mono
:
export MONO_GC_PARAMS=xxx
mono sample.exe
并获得帮助:
Warning: In environment variable `MONO_GC_PARAMS': Unknown option `xxx`. - Ignoring.
MONO_GC_PARAMS must be a comma-delimited list of one or more of the following:
max-heap-size=N (where N is an integer, possibly with a k, m or a g suffix)
soft-heap-limit=n (where N is an integer, possibly with a k, m or a g suffix)
nursery-size=N (where N is an integer, possibly with a k, m or a g suffix)
major=COLLECTOR (where COLLECTOR is `marksweep', `marksweep-conc', `marksweep-par', 'marksweep-fixed' or 'marksweep-fixed-par')
minor=COLLECTOR (where COLLECTOR is `simple' or `split')
wbarrier=WBARRIER (where WBARRIER is `remset' or `cardtable')
stack-mark=MARK-METHOD (where MARK-METHOD is 'precise' or 'conservative')
[no-]cementing
evacuation-threshold=P (where P is a percentage, an integer in 0-100)
(no-)lazy-sweep
Experimental options:
save-target-ratio=R (where R must be between 0.10 - 2.00).
default-allowance-ratio=R (where R must be between 1.00 - 10.00).
如您所见,列出了max-heap-size
,而不是Experimental Options
。所以我说这是安全的。
答案 1 :(得分:0)
记录在mono man page:
中设置堆的最大大小。大小以字节和 必须是两个人的力量。后缀
k',
m'和`g'可以用来 分别指定kilo-,mega-和gigabytes。限额是总和 托儿所,主要堆和大对象堆。一旦达到限制 到达应用程序时将尝试接收OutOfMemoryExceptions 分配。不是max-heap-size中设置的完整内存范围 由于内部原因,可以满足单一分配 碎片。默认情况下,禁用堆限制,GC将尝试 使用所有可用内存。