gpt4 book ai didi

c# - 你能阻止内存被交换到磁盘吗?

转载 作者:IT王子 更新时间:2023-10-28 23:32:26 29 4
gpt4 key购买 nike

我想知道是否可以防止对象(类或结构)的内存被交换到磁盘?

编辑:至于为什么有人告诉我我要处理的一些数据不能写入磁盘。
我不希望它留出足够长的时间来交换数据,但我认为值得检查。

最佳答案

我仍然不清楚你为什么要这样做。在 C# 的上下文中,您必须做两件事:“固定”内存,使其不能被垃圾回收重新定位,然后锁定它,使其不会被换出。

这是一篇不错的博文,描述了如何进行第一部分(固定):

http://www.matthew-long.com/2005/10/18/memory-pinning/

现在你需要对象的地址和范围才能调用VirtualLock:

http://msdn.microsoft.com/en-us/library/Aa366895

请注意,VirtualLock 仅锁定页面(以 4K 为单位),因此您的内存区域需要至少有那么大,并与页面的开头对齐。我假设它需要在 unsafe 上下文中调用,但我不确定。

关于该主题的先前帖子: Prevent an object from being paged out (VirtualLock equivalent)

另一篇相关博文: http://geekswithblogs.net/robp/archive/2008/08/13/speedy-c-part-3-understanding-memory-references-pinned-objects-and.aspx

关于c# - 你能阻止内存被交换到磁盘吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4682225/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com