下面是其他人寫的。妳可以試試。
壹個能夠解決OUT OF MEMORY的辦法:
out of memory
的意思是內存不足。
作為壹個有著些年頭WIN32 C++ 開發經驗的程序員我不同意WIN7
的預讀等等說法,因為我不認為系統的預讀會占用用戶地址空間,起碼來說,預讀功能是單獨的系統服務,獨立的進程。而系統的內存不足的話,windows肯定會有提示,不知道大家有沒有遇到過,右下角出現壹個*的小三角提示虛擬內存太小。
曾懷疑過是DN程序內存泄漏或者沒有考慮到內存空間導致申請的內存超出2GB,而導致此問題,但是每次出此BUG時我去觀察內存占用情況卻發現壹般都保持在1.5G。所以壹開始排除了這種可能,不過今天忽然想到壹點,就是內存映射文件,而DN的資源包最大恰好是0.5G。
因此極其有可能是這個原因。(內存映射方式打開文件雖然不會將整個文件加載到內存,但是會占用與文件大小相等的地址空間,而win32系統 進程的最大地址空間是4GB
其中默認用戶地址空間是2GB,也就是說做為程序員壹個進程最多也就2GB的地址空間而出現內存不足提示的時候DN進程的內存使用是1.5G加上0.5G的資源包地址空間大概已經達到2GB因此當再申請內存的時候就會失敗。)
說這些估計很難有人理解,那麽說壹下解決方案吧,(我沒DN的源碼沒辦法去修改他內部的BUG所以只能從其他地方想辦法了)以下是重點。
修改WINDOWS啟動配置,讓進程用戶地址空間達到3GB
windows
7系統:
1.進入命令行: 點擊開始菜單 -> 在搜索框中輸入 "cmd",按下 ctrl + shift +
回車(命令行的*員模式)
2.輸入命令:bcdedit /set increaseuserva 3072
回車
3.重啟系統.
xp系統:
1.去掉引導文件只讀等屬性:開始 -> 運行 輸入"attrib
c:\boot.ini -h -r -s" 回車
2.編輯引導文件:開始 -> 運行 輸入"c:\boot.ini"
回車,在類似“multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP
Professional" /noexecute=optin /fastdetect” 這壹行最後加上“/3GB”
保存。
3.恢復引導文件只讀等屬性:開始 -> 運行 輸入"attrib c:\boot.ini +h +r +s"
回車
4.重啟系統.
( 提醒 XP系統編輯引導文件可以 直接 我的電腦 -> 屬性 -> 高級
-> 啟動和故障恢復 設置 -> 編輯 弄完別忘保存)