我想知道是否可以显式声明 C# 应用程序应该使用哪种内存类型(物理内存或虚拟内存)来执行不同的操作?让我通过一个例子来解释它:
比方说,我有一个大约 100 或 200 MB 的文件。我需要解析这个文件,访问和分析它的内容并对文件内容执行操作。我是否可以专门将整个文件及其内容存储在虚拟内存而不是物理内存上?
如果可能的话,有什么副作用/注意事项应该牢记在心吗?
我的问题背后的原因是我经常需要处理如此巨大的文件或数据集(从数据库中检索)并对它们执行操作,其中一部分不需要顺序发生或同步。如果可能的话,我想通过并行化非顺序部分来提高应用程序的执行时间和性能。
最佳答案
通常您不会(也不应该)了解物理内存的管理方式。在 Windows 中,因此在 CLR 中,一切都是虚拟内存。
除非您遇到特定问题,否则您应该假装一切都是物理内存。
您可以依靠操作系统智能地确定什么应该保留在物理内存中以及什么可以换出。仅当存在内存压力时才会发生交换,即如果您分配的内存多于实际可用的内存。
此外,现在 100-200 MB 并不算多。
关于c# - 在 C# 中手动控制内存分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32095771/