我目前正在将.Net应用程序移植到OSX,并且在应用程序崩溃时遇到问题"太多打开的文件"例外。我能够发现OSX每个应用程序有256个打开文件限制(默认情况下),并且在某些情况下我的应用程序超出此限制。但是,我无法找出为什么OSX认为我将文件保持打开状态。
例如,这个简单的命令会使目录中的所有文件都保持打开状态,即使我没有打开它们:
var files = Directory.GetFiles("/Users/test/MonoDebug/")
我通过以下方式检查打开文件列表:
lsof -c mono
有人知道如何防止这种情况吗?这是正常的单声道行为吗?
OSX 10.9.5,Mono 3.12.1
答案 0 :(得分:0)
也许您在Mono源代码中发现了资源泄漏?
GetFiles()
方法作为内部调用(C代码)实现。然后你应该看io.c,或许在某处找不到对FindClose()
函数的调用?