【问题标题】:Most Efficient Memory Management C#最高效的内存管理 C#
【发布时间】:2014-09-09 08:54:23
【问题描述】:

我将很快为我的学位做一个需要蛮力文本处理和分析的项目。这显然意味着对 RAM 的大量读写。

在 C# 中最有效的内存管理方法是什么?上学期我被介绍给memory marshal class,发现这是一种在 RAM 中读取和写入大量数据的非常有效的方法,但也许这只是我的经验。我希望有人能给我一些关于 C# 内存管理的替代方案或最佳实践的建议或建议。

谢谢

【问题讨论】:

  • 一个普遍的最佳实践:只做你需要做的事。尝试在不使用编组(或任何非托管)的情况下制作您的应用程序。它适用于绝大多数情况。如果您通过经验证据发现您处于需要未管理记忆的罕见情况之一,请对其进行研究。但不是之前。在大多数情况下,托管内存比您自己想出的任何东西都高效得多。

标签: c# memory-management marshalling


【解决方案1】:

最有效的内存管理系统会因您在实践中尝试执行的操作而大相径庭。

根据经验,尽量避免使用 C# 中的非托管代码:托管内存足以解决绝大多数问题,除非您确切知道该做什么,否则您不太可能比 C# 更高效托管内存。

所以我的建议如下。尝试完全托管的实现,并采用一些好的做法来防止使用过多的内存:

  • 始终丢弃一次性物品
  • 尝试将重资产相互化,例如字节缓冲区:不要在每次需要时都创建新缓冲区,而是使用缓冲池

如果您获得需要进行手动编组的经验证据,请了解并使用它。但不是以前。

请记住,很多人都从事过 C# 内存管理工作,而大多数 C# 开发人员并不需要更多(以至于他们中的许多人甚至不知道内存管理在幕后是如何工作的,因为他们只是不需要)。 C# 中的托管内存很不错,先试试看。

【讨论】:

    猜你喜欢
    • 2013-03-28
    • 2019-06-23
    • 2015-12-27
    • 1970-01-01
    • 2010-09-06
    • 2018-12-17
    • 2017-01-26
    相关资源
    最近更新 更多