Mono 在 Ubuntu 上抛出 OutOfMemoryException 而不是 OSX 或 Windows

Posted

技术标签:

【中文标题】Mono 在 Ubuntu 上抛出 OutOfMemoryException 而不是 OSX 或 Windows【英文标题】:Mono throws OutOfMemoryException on Ubuntu but not OSX or Windows 【发布时间】:2015-02-24 19:56:40 【问题描述】:

我已经在 Ubuntu 服务器上安装了 Mono,并且“Hello World”正在运行,但是一个简化的应用程序可以进行一些数组处理并且在 OSX 或 Windows 上的 Mono 下运行没有问题:

System.OutOfMemoryException: Out of memory.
  at (wrapper alloc) object:AllocVector (intptr,intptr)

它不应该需要超过几 MB 的内存。服务器有 4GB 内存。

在 alloc 配置文件下再次运行会出现不同的异常:

System.OverflowException: Number overflow.
  at (wrapper managed-to-native) object:__icall_wrapper_mono_array_new_specific (intptr,int)

问题是不一致的,有时代码运行一次但没有第二次。有时它第一次不起作用。有时它会以不同的方法失败,但原因相同。

程序和完整输出可以在http://dev.intelorca.co.uk/2014/gacj_allocproblem.zip下载 看看其他人是否在单声道下运行该程序时遇到问题并且可以提供有关问题所在的任何见解会很好。任何将 Mono 配置为在 Ubuntu 上运行得更好的建议也会有所帮助。

程序应输出“Cambridge Surprise Major”128 次。

【问题讨论】:

您的单声道安装可能已损坏。 我首先使用 apt-get install mono-complete 安装它,然后从源代码安装,都导致了这个问题。安装/配置的哪一部分可能导致这种情况发生。 你是如何从源代码安装的?在从源代码安装之前,您是否先删除了 mono-complete? 类似: wget download.mono-project.com/sources/mono/mono-3.8.0.tar.bz2 tar -xvf mono-3.8.0.tar.bz2 cd mono-3.8.0/ ./configure --prefix=/usr/local make sudo make install I事先没有卸载 mono-complete,但是 mono --version 显示了我构建 mono 的构建日期。 您在使用 Arm 处理器并使用浮点数/双精度数吗?尝试升级到 3.12... 【参考方案1】:

问题是由于 Mono 的采用 amd64 架构的即时编译器中的一个错误造成的。此问题已于 2015 年 1 月 3 日修复。

错误报告:https://bugzilla.xamarin.com/show_bug.cgi?id=25631 修复:https://github.com/mono/mono/commit/9e03c10d8fefea9210ca015cf484e819623c0a1a

【讨论】:

以上是关于Mono 在 Ubuntu 上抛出 OutOfMemoryException 而不是 OSX 或 Windows的主要内容,如果未能解决你的问题,请参考以下文章

Nginx 在静态文件上抛出 403 Forbidden

为啥 FileSystemXmlApplicationContext 在存在的文件上抛出 FileNotFoundException

glCreateShader 在 OSX 上抛出异常,为啥?

AVAudioRecorder 在 prepareToRecord 上抛出异常

Junit强制在方法调用上抛出异常

修复 Firefox 在 setInterval 上抛出错误。 [复制]