c# - Linux VPS 上的单声道垃圾收集

标签 c# mono

我一直在努力让我的 C# 游戏的服务器在 Linux 上运行,它运行良好,除了一个问题:垃圾收集器似乎没有将任何内存返回给操作系统,所以它最终到达限制和崩溃。

我注意到在释放大量内存(更改 map 或玩家离开)的操作之后使用 System.GC.Collect 可以防止 OutOfMemoryError,但它仍然使用除了大约 30MB 的可用内存 (1GB) 之外的所有内存,这仍然使得当尝试分配较小的内存量时,它可能会崩溃。

我不认为这是内存泄漏,因为在 Windows 上,当有一个玩家在线时它最多使用 60MB,但是让一个人反复连接和断开连接足以用完 Linux 服务器上的所有内存.

单声道 --version:

Mono JIT compiler version 2.10.8 (tarball Mon Feb 25 19:25:00 MSK 2013)
Copyright (C) 2002-2011 Novell, Inc, Xamarin, Inc and Contributors. www.mono-project.com
        TLS:           __thread
        SIGSEGV:       altstack
        Notifications: epoll
        Architecture:  x86
        Disabled:      none
        Misc:          softdebug
        LLVM:          supported, not enabled.
        GC:            Included Boehm (with typed GC and Parallel Mark)

操作系统为CentOS,VPS平台为OpenVZ。

最佳答案

这可能是垃圾收集器的问题。尝试使用 mono --gc=sgen 参数开始游戏。我知道它在某些情况下有效。

关于c# - Linux VPS 上的单声道垃圾收集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15096833/

相关文章:

c# - 具有相同kendo mvc上传控件的多个部分 View

c# - Ajax 功能似乎不起作用

c++ - Linux 中伪终端的读写问题

iphone - 在 monotouch 中处理 json 的最佳方法是什么

linux - Bash 脚本 : bad interpreter

c# - 如何访问 App.config 中的其他选项?

c# - 合并数据表但忽略重复的行

c# - 使用 Group by 的 Linq to SQL

c# - 获取 .NET 对象的内存地址 (C#)

asp.net-mvc - 支持 MVC3 和 EF 的 Mono 有多远?