2009-10-01 18 views

回答

2

作業對象是正確的道路要走。

至於錯誤代碼,確實沒有一個。您使用CreateProcess創建流程並使用CreateJobObject創建流程,然後將流程與作業對象(使用AssignProcessToJobObject)相關聯。

如果子進程分配的內存大於允許的內存量,父進程將不會收到錯誤消息。事實上,即使父進程退出,限制也會被執行。如果子進程嘗試分配超過允許的內存量,則分配將失敗。

2

您可以使用CreateProcess()產生一個進程。

一旦你這樣做了,你可以使用SetProcessWorkingSetSize()來試圖控制它使用多少物理內存,但這對於VMM來說比對一些實際的edict更加強烈,這會導致malloc()和new開始失敗。

沒有辦法說「這個過程將花費4mb的內存,並在此之後所有的分配失敗」。我的意思是,你將鏈接到win32 dll,你不知道這些東西需要什麼樣的內存使用。如果你想讓你的應用程序只佔用一定數量的內存,請不要多分配內存。不要做分配內存的事情。

關於錯誤代碼的問題根本沒有意義。

1

據我所知,windows上沒有這種可能性。儘管如此,測試和其他事情會非常有用。

您有這對Java作爲一個JVM只使用的內存預設的量,但它不是一個功能,而是如果你啓動一個進程,你失去控制這個過程的一個問題;-)

1

。操作系統可以控制其行爲(即內存佔用),但即使在這種情況下,我也無法想象如何實現這一點,正如jeffamaphone所說,任何限制最多隻是一個建議,而不是指令。一個進程可以調用外部靜態庫,COM實例等,所以我不能想象如何驗證/強制執行此限制。

相關問題