我想在OSX 10.9上运行需要4G RAM以上的.NET可执行文件。我安装了Xamarin Studio,但AFAIKT Xamarin没有配备64位单声道版本,所以我决定使用“with-large-heap = yes”配置制作一个自定义的64位单声道,并将其安装在不同的位置
git clone https://github.com/mono/mono
cd mono
./configure --prefix=<my-local-dir> --enable-nls=no --with-large-heap=yes
make
make install
(我还在this page中的“选项3”之后构建了一个64位F#并安装在my-local-dir中。)
但是,当我使用64位单声道运行可执行文件(在Xamarin中使用规范“fsharpc”构建的F#程序)时,它仍然会与System.OuOtfMemory异常崩溃。我试过这个:
export PATH=$PATH:<my-local-dir>/bin
MONO_GC_PARAMS=max-heap-size=5g <my-local-dir>/bin/mono <my-executable>
并发出警告
Warning: In environment variable `MONO_GC_PARAMS': `max-heap-size` must be an integer.
(这个错误信息有点误导,我认为这真的意味着5g太大而且不受支持,因为如果我把“3g”放在那里就不会抱怨)。当程序超出内存时,程序仍会因同样的异常而崩溃。
我是否错过了重要的事情?如何将mono配置为具有超过4G的堆大小?
答案 0 :(得分:1)
您仍在运行32位版本的mono(检查您的PATH env var)。这也解释了为最大堆大小解析5g(它将与64位单声道正常工作)。 上面的configure命令的默认设置是安装在/ usr / local / bin中,所以只需使用/ usr / local / bin / mono program.exe运行程序。