2009-09-25 58 views
4

如何將內存中的對象保留在內存中,使其不會被.Net中的操作系統調出?防止對象被分頁(VirtualLock相當於)

ie類似於VirtualLock的東西,但是在一個對象上運行,所以如果發生壓縮並且對象被移動,它仍然不會被調出,等等。(我想可以固定對象,確定它是什麼頁面屬於,然後VirtualLock這些網頁,但這似乎是不理想的,原因很多)。

如果可能,您可以指示我參考或工作示例? (C#理想)

+2

如果您確實需要這種控制量,爲什麼要編寫託管代碼? – 2009-09-25 17:01:48

+2

那麼,沒有進入托管/非託管的辯論,所有通常的原因使用託管代碼。 :)我們只希望一些不常使用的對象不要被分頁,以便在返回時儘可能快地響應。這似乎不是一個獨特的非管理世界對我來說...... – Gene 2009-09-25 20:27:38

回答

3

如果您需要確定性響應時間,則應使用實時操作系統,該操作系統按照您指定的限制運行,而不是Windows。

根據定義,如果它們不常使用,候選者列表中的最高值將被分頁。

這是一個可怕的解決方案:創建一個線程(或異步計時器),一旦INTERVAL ms觸及您的對象,然後回到睡眠狀態。調整INTERVAL直到獲得所需的行爲。

+0

+1解決方案:如果您必須堅持使用託管代碼*,並且您不想使用自定義CLR主機,那麼這很好。 – 2010-04-02 20:12:58