【问题标题】:How to get current memory page size in C#如何在 C# 中获取当前内存页面大小
【发布时间】:2015-06-16 12:57:17
【问题描述】:

我需要在不使用“Kernel32.dll”的情况下确定 C# 中的内存页面大小

SYSTEM_INFO si;
GetSystemInfo(&si);

这很重要,因为代码应该是跨平台的,我们不应该有平台特定的代码。

是否有任何 .NET 类提供该数据?

【问题讨论】:

  • 那么您将如何在非平台特定代码中使用页面大小?
  • 这很简单。我们正在使用 MemoryMappedFiles ,当视图具有 Memory Page Size 的大小时,它们的效果最好。到目前为止,确定内存页面大小是唯一的问题。
  • @xanatos Environment.SystemPageSize 是一个很好的缓冲区大小,唯一特定于平台的部分是不同的平台会给出不同的结果,所以它不是特定于平台的你会用它。

标签: c# .net memory-management


【解决方案1】:

试试Environment.SystemPageSize:

获取操作系统内存页的字节数。

需要 .NET >= 4.0

在评论中甚至写道:

在 Windows 中,该值是 SYSTEM_INFO 结构中的 dwPageSize 成员。

【讨论】:

  • 我已经提到我们不应该使用 SYSTEM_INFO 和 Windows API。
  • @PandichieAnton-Valentin 您不使用 SYSTEM_INFO,它是使用它的 .NET 方法。这是实现细节。
  • @PandichieAnton-Valentin 请注意,我认为您的问题是 XY 问题:与其考虑“页面大小是多少,以便我可以准确使用它”,您可以简单地放大:制作 1mb 的视图(1024*1024),偏移量移动 1mb。页面大小肯定是
  • 你是对的。我正在考虑解决问题而不是真正的问题。谢谢! Sencond Asnswer 更好!!!
猜你喜欢
  • 2011-12-12
  • 1970-01-01
  • 1970-01-01
  • 2010-10-10
  • 2018-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多