c# - 在 C# 中手动控制内存分配

标签 c# memory-management parallel-processing virtual-memory

我想知道是否可以显式声明 C# 应用程序应该使用哪种内存类型(物理内存或虚拟内存)来执行不同的操作?让我通过一个例子来解释它:

比方说,我有一个大约 100 或 200 MB 的文件。我需要解析这个文件,访问和分析它的内容并对文件内容执行操作。我是否可以专门将整个文件及其内容存储在虚拟内存而不是物理内存上?

如果可能的话,有什么副作用/注意事项应该牢记在心吗?

我的问题背后的原因是我经常需要处理如此巨大的文件或数据集(从数据库中检索)并对它们执行操作,其中一部分不需要顺序发生或同步。如果可能的话,我想通过并行化非顺序部分来提高应用程序的执行时间和性能。

最佳答案

通常您不会(也不应该)了解物理内存的管理方式。在 Windows 中,因此在 CLR 中,一切都是虚拟内存。

除非您遇到特定问题,否则您应该假装一切都是物理内存。

您可以依靠操作系统智能地确定什么应该保留在物理内存中以及什么可以换出。仅当存在内存压力时才会发生交换,即如果您分配的内存多于实际可用的内存。

此外,现在 100-200 MB 并不算多。

关于c# - 在 C# 中手动控制内存分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32095771/

相关文章:

linux - 您如何为 PIGZ(并行 gzip)准备压缩流?

c# - 使用 "readonly record struct"类型作为方法的out参数,会引起装箱吗?

c# - 如何保留部署在不同集群节点上的两个相同参与者之间的状态? (阿卡网)

用于监视特定进程的 Linux 内核模块

java - Map-Reduce 中的二次排序

parallel-processing - 是否有一种从Java 8流中提取数据 block 的好方法?

c# - 使用数据注释检查特定电子邮件地址

c# - 如何刷新下拉列表值更改的页面?

r - 增加(或减少)R 进程可用的内存

c - C中内存中的指针布局