① 內存溢出錯誤怎麼解決
內存溢出可能是病毒作怪,也有可能是程序錯誤. 內存溢出是指系統內存全部被佔用,沒有可用內存分配給新啟動的任務的情況,通常不會導致系統崩潰。 可以擴展一條內存,或者增大虛擬內存的大小 下面以在Windows XP下轉移虛擬內存所在盤符為例介紹虛擬內存的設置方法: 一、手動設置虛擬內存 在默認狀態下,是讓系統管理虛擬內存的,但是系統默認設置的管理方式通常比較保守,在自動調節時會造成頁面文件不連續,而降低讀寫效率,工作效率就顯得不高,於是經常會出現「內存不足」這樣的提示,下面就讓我們自已動手來設置它吧。 ①用右鍵點擊桌面上的「我的電腦」圖標,在出現的右鍵菜單中選擇「屬性」選項打開「系統屬性」窗口。在窗口中點擊「高級」選項卡,出現高級設置的對話框. ②點擊「性能」區域的「設置」按鈕,在出現的「性能選項」窗口中選擇「高級」選項卡,打開其對話框。 ③在該對話框中可看到關於虛擬內存的區域,點擊「更改」按鈕進入「虛擬內存」的設置窗口。選擇一個有較大空閑容量的分區,勾選「自定義大小」前的復選框,將具體數值填入「初始大 二、量身定製虛似內存 1.普通設置法 根據一般的設置方法,虛擬內存交換文件最小值、最大值同時都可設為內存容量的1.5倍,但如果內存本身容量比較大,比如內存是512MB,那麼它佔用的空間也是很可觀的。所以我們可以這樣設定虛擬內存的基本數值:內存容量在256MB以下,就設置為1.5倍;在512MB以上,設置為內存容量的一半;介於256MB與512MB之間的設為與內存容量相同值。 2.精準設置法 由於每個人實際操作的應用程序不可能一樣,比如有些人要運行3DMAX、Photoshop等這樣的大型程序,而有些人可能只是打打字、玩些小游戲,所以對虛擬內存的要求並不相同,於是我們就要因地制宜地精確設置虛擬內存空間的數值。 ①先將虛擬內存自定義的「初始大小」、「最大值」設為兩個相同的數值,比如500MB; ②然後依次打開「控制面板→管理工具→性能」,在出現的「性能」對話框中,展開左側欄目中的「性能日誌和警報」,選中其下的「計數器日誌」,在右側欄目中空白處點擊右鍵,選擇右鍵菜單中的「新建日誌設置」選項; ③在彈出的對話框「名稱」一欄中填入任意名稱,比如「虛擬內存測試」。在出現窗口中點擊「添加計數器」按鈕進入下一個窗口; ④在該窗口中打開「性能對象」的下拉列表,選擇其中的「Paging File」,勾選「從列表中選擇計數器」,並在下方的欄目中選擇「%Usage Peak」;勾選「從列表中選擇範例」,在下方的欄目中選擇「_Total」,再依次點擊「添加→關閉」結束 ⑥在右側欄目中可以發現多了一個「虛擬內存測試」項目,如果該項目為紅色則說明還沒有啟動,點擊該項,選擇右鍵菜單中的「啟動」選項即可 接下來運行自己常用的一些應用程序,運行一段時間後,進入日誌文件所在的系統分區下默認目錄「PerfLogs」,找到「虛擬內存測試_000001.csv」並用記事本程序打開它,在該內容中,我們查看每一欄中倒數第二項數值,這個數值是虛擬內存的使用比率,找到這項數值的最大值,比如圖中的「46」,用46%乘以500MB(前面所設定的虛擬內存數值),得出數值為230MB。 用該數值可以將初始大小設為230MB,而最大值可以根據磁碟空間大小自由設定,一般建議將它設置為最小值的2到3倍。這樣我們就可以將虛擬內存打造得更精準,使自己的愛機運行得更加流暢、更具效率。 小」、「最大值」欄中,而後依次點擊「設置→確定」按鈕即可,最後重新啟動計算機使虛擬內存設置生效。 建議:可以劃分出一個小分區專門提供給虛擬內存、IE臨時文件存儲等使用,以後可以對該分區定期進行磁碟整理,從而能更好提高計算機的工作效率。 三、Windows虛擬內存加速密籍 虛擬內存對於任何版本的Windows而言都是十分重要的。如果設置得當,它將極大地提升電腦的性能和運行速度。可是在默認狀態下,Windows始終將虛擬內存設為物理內存的1.5倍。這樣的話,如果用戶安裝2GB的內存,系統就會騰出高達3GB的硬碟空間作為虛擬內存。但以當前的主流應用軟體和游戲對內存的需要來看,根本沒有必要使用這么多的虛擬內存。那麼,有沒有什麼秘技或絕招可使虛擬內存運用得更有效率或更顯性能呢? 1、分割存於多個硬碟 將虛擬內存設在較快的硬碟上,的確可使虛擬內存的運作更有效率。但是若電腦上兩個硬碟速度一樣快,則應將虛擬內存平均分配在兩個不同的硬碟上(並非同一硬碟的不同分區)。因為同步進行讀寫操作會更有效地提高系統整體的虛擬內存性能。 舉個例子,假設你原本在硬碟C上設置了700MB的虛擬內存,現在你可嘗試重新分配,即把硬碟C改為350MB,硬碟D新增350MB的虛擬內存。理論上這樣做會加快虛擬內存整體的讀寫操作. 2、硬碟需有足夠空間 如果你不是很有經驗的電腦用戶,又或者沒有特殊的使用要求,在Windows XP中選擇「系統管理的大小」的方法來自動處理虛擬內存,一般情況下應該會比選擇「自定義大小」的方法來得安全和穩定。不過,有一點大家必須注意,由於虛擬內存的「頁面文件」(pagefile.sys)會隨著電腦使用過程進行收縮和擴展,為使系統管理虛擬內存能夠進行得順利和更具彈性,我們必須保證分頁文件所在的硬碟擁有足夠的可用空間。 3、最小值等於最大值 選擇「自定義大小」的方法來處理虛擬內存,並將最大值和最小值都設為同一數值。有很多人都相信用這種方法來處理虛擬內存有助於提高系統的性能。他們所持的理由是,當最大值和最小值都相等時,系統無需時刻進行收縮和擴展頁面文件的動作。省去了這些工作,相應地就是提高系統效率。 這種方法,很多人堅信有效,但同樣地,也有人指出其實並沒有效果。但不管怎樣也好,如要將最大值和最小值設為相等,我們必須堅守一個原則,那就是虛擬內存的大小必須足夠,否則系統輕則會出現效率下降(要進行更多復寫動作來騰出空間),嚴重的更會造成系統不穩定。 4、整理頁面文件 文件數據保存在硬碟上久了,文件碎片(fragment)自然會產生。要保持或提高硬碟的工作效率,我們應不時為硬碟進行一次碎片整理。所謂虛擬內存,其實也是硬碟上的資料文件,那麼虛擬內存是否也應該像普通文件般需要整理呢? Windows系統處理頁面文件(即虛擬內存)的方法有別於一般的文件。相比之下,頁面文件比一般文件更少出現碎片,為頁面文件進行整理通常是沒有必要的。事實上,當Windows XP進行磁碟碎片整理時,頁面文件不會牽涉其中。 雖然Windows不會對頁面文件進行整理,但事實上頁面文件也有碎片存在。追求「盡善盡美」的朋友可能仍想對頁面文件進行碎片整理。大家不妨試試下面的方法: 在桌面「我的電腦」圖標上單擊滑鼠右鍵,在隨後出現的功能菜單中選「屬性」。進入系統屬性的設置窗口,用滑鼠點選「高級」-->「性能」-->「設置」-->「高級」-->「更改」,在隨後出現的「虛擬內存」設置窗口中選中「無分頁文件」一項。最後單擊「設置」按鈕退出,並重新啟動電腦。 重新啟動後,檢查一下磁碟根目錄中還有沒有pagefile.sys頁面文件存在,如有就將之刪除。清除掉虛擬內存的頁面文件後,現在我們再進行磁碟碎片整理。完成後,按照前面的步驟重新設置一定數量的虛擬內存,並啟動電腦使之生效。經上述方法處理後,新得出的頁面文件將會是沒有碎片的。 另外,如果想查看頁面文件碎片的具體情況呢?啟動磁碟碎片整理程序,為存在有頁面文件的硬碟進行一次「分析」,再點選「查看報告」,看看「頁面文件碎片」一欄便會一目瞭然。 四、虛擬內存的理想大小及准確定位 1、虛擬內存的理想大小 想以「自定義大小」的方法來處理虛擬內存,究竟應該設置多大的虛擬內存呢?在Windows XP中,如果由操作系統自己定義虛擬內存,系統通常會把最小值設置為物理內存的1.5倍。當擴展時,最大值則介於物理內存的2.5至3倍。一般情況下,用戶想自定義虛擬內存的大小,均可參照這個比例設置。 真的要參照這個比例嗎?如果我的電腦上有1GB的內存,難不成最小值要設置為1.5GB,最大值是2.5至3GB。這樣一來。Pagefile.sys頁面文件至少為1.5GB,太不現實了! 其實,大內存的系統跟小內存的系統相比,在設置虛擬內存時,標准有些不同。 如果大家有512MB以上甚至1GB的內存,既然物理內存已經相當充足,所需的虛擬內存反而應該減少。故在大內存的系統中,虛擬內存的最小值可以設成物理內存的一半。比如有1GB的內存,虛擬內存的最小值設成512MB,最大值則維持3GB以備不時之需。注意:雖然最大值設為3GB,系統是不會立即出現3GB大小的pagefile.sys文件,實際上它首先會以最小值出現,待有擴展需要時才會遞增。 另外,有些大內存的朋友,可能會乾脆不設置虛擬內存,以此強迫系統使用速度較快的內存。其實這是不太明智的做法。正所謂凡事都不要做得太絕對,完全沒有虛擬內存也不行。原因是不少應用程序在設計時要求必須使用虛擬內存,沒有了就會造成系統不穩定或死機。 至於小內存的系統,例如256MB,參照1.5倍及3倍的設置比例最穩當。即虛擬內存最小值設為384MB,最大值768MB。 2、手工訂制最准確的虛擬內存 0.5倍、1.5倍、3倍,哇!好像買衣服時分大、中、小號,完全沒有個性。究竟設置虛擬內存有沒有更「貼身剪裁」的方法呢? 在Windows XP桌面的「開始」→「運行」中輸入perfmon.msc,一個與系統性能有關的監視器便會出現。看看顯示器的底部,有三個計數器(pages/sec、Avg.Disk Queue Length及rocessor Time,)。為了便於我們接下來對虛擬內存的頁面文件進行精確監測,現在請大家將這三個計數器逐一點選,並按鍵盤上的Delete鍵將它們刪除。請大家放心,刪除後,下次再啟動系統性能監視器時,這三個項目會重新出現。 刪除後,現在請在圖表中央位置單擊滑鼠右鍵,在隨後出現的功能菜單中點選「添加計數器」一項,跟著在跳出窗口的「性能對象」一欄選「Process」。之後再在「從列表選擇」一欄中點選「Page File Bytes」。不清楚「Page File Bytes」代表什麼意思,只要單擊「說明」按鈕,解說文字便會出現在對話框之下。 選定「Page File Bytes」後,再在右方的「從列表選擇範例」一欄選取「Total」項,之後依次單擊「添加」和「關閉」按鈕,一個名為「Page File Bytes」的計數器便會出現在性能監視器的下方中。 重復以上的動作,再添加一個名為「Page File Bytes Peak」的計數器(即Process下面的Page File Bytes Peak)。 現在,回頭看一下監視器,圖表中應該正在顯示並計量著剛才新增加的兩個計數器。如無意外,這兩個計數器在圖表上的顯示不正確,即數值靠近最高比例線,沒有動態變化。不用怕,這並不表示你的電腦出了什麼問題,而是圖表比例設得不太恰當而已!用滑鼠右鍵逐一單擊監視器底部的「Page Fele Bytes」和「Page File By8tes Peak」計數器,並選「屬性」一項。在「數據」頁面的「比例」一欄中改為0.0000001,這樣顯示器中的圖表便不再是沒有動靜了。 如果你看過系統提供的說明,相信應該知道「Page File Bytes」和「Page File Bytes Peak」正是代表了系統監測期間所使用的虛擬內存及其峰值是多大。因此,需要精確地手工設置虛擬內存,可參考圖表下方顯示的數字,其單位是Bytes 想知道在正常的情況下,你的系統會耗用多少虛擬內存?請將平時日常使用的應用軟體同時啟動並讓它們開始工作,接著再看性能監視器上所顯示的數值,心中有數了吧。 人總有瘋狂的時候,想知道自己瘋狂使用電腦時系統需要多少虛擬內存,現在就盡情地將電腦上的程序啟動並運行(例如,開十多個IE瀏覽器窗口上網,播放MP3和DVD影片,再進行光碟刻錄或DV影片壓縮編碼),看看監視器的百分比會升高到多少。 在圖表上右擊滑鼠,點選「屬性」,進入「圖表」頁面勾選「水平格線」一項。這樣圖表中會出現一條條的水平分割線,是不是好分辨了? 圖表中的紅色垂直線跑得太快,來不及開啟電腦上的程序進行測試? 同樣,在圖表上單擊滑鼠右鍵,選「屬性」,在常規頁面的「自動抽樣間隔」一項中將1秒改為5秒。此時,圖表中的「圖形時間」數值便會由1分40秒變成8分20秒。換言之,紅色垂直線走完一圈需花費8分20秒,這個時間應該足以讓大家開啟並運行很多應用程序,然後再慢慢查看圖表中的結果。 最後,通過監視器的圖表,相信大家已經能粗略估計你的電腦系統應設置多大的虛擬內存了。 五、出現「虛擬內存不夠」的幾個可能 1、感染病毒 有些病毒發作時會佔用大量內存空間,導致系統出現內存不足的問題。趕快去殺毒,升級病毒庫,然後把防毒措施做好! 2、虛擬內存設置不當 虛擬內存設置不當也可能導致出現內存不足問題,一般情況下,虛擬內存大小為物理內存大小的2倍即可,如果設置得過小,就會影響系統程序的正常運行。重新調整虛擬內存大小以WinXP為例,右鍵點擊「我的電腦」,選擇「屬性」,然後在「高級」標簽頁,點擊「性能」框中的「設置」按鈕,切換到「高級」標簽頁,然後在「虛擬內存」框中點擊「更改」按鈕,接著重新設置虛擬內存大小,完成後重新啟動系統就好了。 3、系統空間不足 虛擬內存文件默認是在系統盤中,如WinXP的虛擬內存文件名為「pagefile.sys」,如果系統盤剩餘空間過小,導致虛擬內存不足,也會出現內存不足的問題。系統盤至少要保留300MB剩餘空間,當然這個數值要根據用戶的實際需要而定。用戶盡量不要把各種應用軟體安裝在系統盤中,保證有足夠的空間供虛擬內存文件使用,而且最好把虛擬內存文件安放到非系統盤中。 4、因為SYSTEM用戶許可權設置不當 基於NT內核的Windows系統啟動時,SYSTEM用戶會為系統創建虛擬內存文件。有些用戶為了系統的安全,採用NTFS文件系統,但卻取消了SYSTEM用戶在系統盤「寫入」和「修改」的許可權,這樣就無法為系統創建虛擬內存文件,運行大型程序時,也會出現內存不足的問題。問題很好解決,只要重新賦予SYSTEM用戶「寫入」和「修改」的許可權即可,不過這個僅限於使用NTFS文件系統的用戶。 六、虛擬內存的優化 1. 啟用磁碟寫入緩存 在「我的電腦」上單擊滑鼠右鍵選擇「屬性->硬體」,打開設備管理器找到當前正在使用的硬碟,單擊滑鼠右鍵選擇屬性。在硬碟屬性的的「策略」頁中,打開「啟用磁碟上的寫入緩存」。 這個選項將會激活硬碟的寫入緩存,從而提高硬碟的讀寫速度。不過要注意一點,這個功能打開後,如果計算機突然斷電可能會導致無法挽回的數據丟失。因此最好在有UPS的情況下再打開這個功能。當然,如果你平常使用計算機時不要進行什麼重要的數據處理工作,沒有UPS也無所謂,這個功能不會對系統造成太大的損失。 2. 打開Ultra MDA 在設備管理其中選擇IDE ATA/ATAPI控制器中的「基本/次要IDE控制器」,單擊滑鼠右鍵選擇「屬性」,打開「高級設置」頁。這里最重要的設置項目就是「傳輸模式」,一般應當選擇「DMA(若可用)」。 3. 配置恢復選項 Windows XP 運行過程中碰到致命錯誤時會將內存的快照保存為一個文件,以便進行系統調試時使用,對於大多數普通用戶而言,這個文件是沒有什麼用處的,反而會影響虛擬內存的性能。所以應當將其關閉。 在「我的電腦」上單擊滑鼠右鍵,選擇「屬性->高級」,在「性能」下面單擊「設置」按鈕,在「性能選項」中選擇「高級」頁。這里有一個「內存使用」選項,如果將其設置為「系統緩存」,Windows XP 將使用約4MB的物理內存作為讀寫硬碟的緩存,這樣就可以大大提高物理內存和虛擬內存之間的數據交換速度。默認情況下,這個選項是關閉的,如果計算機的物理內存比較充足,比如256M或者更多,最好打開這個選項。但是如果物理內存比較緊張,還是應當保留默認的選項。 七、頁面文件的設置 1、頁面文件的大小計算 對於不同的計算機而言,頁面文件的大小是各不相同的。關於頁面文件大小的設置,有兩個流傳甚廣的「公式」,「物理內存X2.5」或者「物理內存X1.5」。這兩種計算方法固然簡便,但是並不適用於所有的計算機。設置頁面文件大小最准確的方法是看看計算機在平常運行中實際使用的頁面文件大小。 通過Windows XP自帶的日誌功能可以監視計算機平常使用的頁面文件的大小,從而進行最准確的設置,具體步驟如下。 一、在「我的電腦」上單擊滑鼠右鍵,選擇「屬性->高級」,單擊「性能」下面的「設置」按鈕,然後選擇「高級」頁,單擊「虛擬內存」下方的「更改」按鈕。選擇「自定義大小」,並將「起始大小」和「最大值」都設置為300M,這只是一個臨時性的設置。設置完成後重新啟動計算機使設置生效。 二、進入「控制面板->性能與維護->管理工具」,打開「性能」,展開「性能日誌和警告」,選擇「計數器日誌」。在窗口右側單擊滑鼠右鍵選擇「新建日誌設置」 三、隨便設置一個日誌名稱,比如「監視虛擬內存大小」。 四、在「常規」頁中單擊「添加計數器」按鈕。 在「性能對象」中選擇「Paging File」,然後選中「從列表選擇記數器」下面的「%Usage Peak」,並在右側「從列表中選擇範例」中選擇「_Total」。最後單擊「添加」和「關閉」按鈕。 五、別忘了記住「日誌文件」頁中的日誌文件存放位置和文件名,我們後面需要查看這個日誌來判斷Windows XP平常到底用了多少虛擬內存,在這個例子中,日誌文件被存放在D:\Perflog目錄下。 另外還要設置「日誌文件類型」為「文本文件」,這樣便於閱讀。 這時你可以看到剛才新建的日誌條目前面的圖標變成了綠色,這表明日誌系統已經在監視虛擬內存了。如果圖標還是紅色,你應該單擊滑鼠右鍵選擇「開始」來啟動這個日誌。 過一段時間後打開這個CVS文件,我們可以看到如下內容的條目。 這個日誌文件記錄這一段時間中頁面文件的使用情況,注意這里的單位是%,而不是MB。通過簡單的計算,我們就可以得到頁面文件的最小尺寸,公式是「頁面文件尺寸X百分比」。比如這個例子中,虛擬內存最大的使用比率是31%,300MBX31%=93MB,這個值就是虛擬內存的最小值(注意,300MB是前面的設置的臨時值)。 如果物理內存較大,可以考慮將頁面文件的「起始大小」和「最大值」設置為相等,等於上一步中計算出來的大小。這樣硬碟中不會因為頁面文件過渡膨脹產生磁碟碎片,其副作用是由於「最大值」被設置的較小,萬一偶然出現虛擬內存超支的情況,可能會導致系統崩潰。 2、設置頁面文件 現在回到「虛擬內存」的設置對話框中選擇自定義大小並按照上面的計算結果分別設置「初始大小」和「最大值」。這里我們將「初始大小」設置為91M,而將「最大值」設置成了200M,這樣比較保險 3、對頁面文件進行碎片整理 Windows XP運行時需要大量訪問頁面文件,如果頁面文件出現碎片,系統性能將會受到嚴重影響,而且會縮短硬碟的使用壽命。所以我們很有必要對頁面文件定期進行碎片整理。 不過別忘了,頁面文件是系統關鍵文件,Windows XP運行時無法對其進行訪問。所以對它進行碎片整理並不是一件容易的事情。我們有兩種方案可以選擇,一是安裝Windows雙系統,然後啟動另外一個Windows對Windows XP所在的分區進行碎片整理。二是使用專門的工具軟體,比如System File Defragmenter等
② 內存不足、內存溢出的原因和解決方法
如果你的系統虛擬內存太低,可以滑鼠右擊「我的電腦」選擇「屬性→高級→性能下設置→高級→打開虛擬內存設置」,可以重新設置最大值和最小值,按物理內存的1.5~2倍來添加數值,也可以更改虛擬內存的存放位置,可以設置放到其他容量較大的硬碟分區,讓系統虛擬內存有充分的空間,讓系統運行更快。
虛擬內存太低有三種解決辦法:
1. 自定義的虛擬內容的容量(系統默認是自動)太小,可以重新劃分大小。
2. 系統所在的盤(一般是C盤)空餘的容量太小而運行的程序卻很大,並且虛擬內存通常被默認創建在系統盤目錄下,我們通常可以刪除一些不用的程序,並把文檔圖片以及下載的資料等有用文件移動到其他盤中,並清理「回收站」,使系統盤保持1GB以上的空間,或者將虛擬內存定義到其他空餘空間多的盤符下。
3. 系統盤空餘的容量並不小,但因為經常安裝、下載軟體,並反復刪除造成文件碎片太多,也是容易造成虛擬內存不足的原因之一,虛擬內存需要一片連續的空間,盡管磁碟空餘容量大,但沒有連續的空間,也無法建立虛擬內存區。可以用磁碟工具整理碎片。
虛擬內存不足的九大原因及解決方法系統提示「內存不足」的九大原因及解決方法
一、剪貼板佔用了太多的內存
實際上,剪貼板是內存中的一塊臨時區域,當你在程序中使用了「復制」或「剪切」命令後,Windows將把復制或剪切的內容及其格式等信息暫時存儲在剪貼板上,以供「粘貼」使用。如果當前剪貼板中存放的是一幅圖畫,則剪貼板就佔用了不少的內存。這時,請按下述步驟清除剪貼板中的內容,釋放其佔用的內存資源: 1.單擊「開始」,指向「程序」或「所有程序」,指向「附件」,指向「系統工具」,然後單擊「剪貼板查看程序」,打開「剪貼板查看程序」窗口。2.在「編輯」菜單上,單擊「刪除」命令。3.關閉「剪貼板查看程序」窗口。
為了與Microsoft Office程序提供的多重剪貼板相區分,上述所說的剪貼板,常被我們稱為系統剪貼板。如果你正在使用Micros OftOffice程序,而且使用了其多重剪貼板功能,那麼你應清空「Office剪貼板」上的項目,方法是:在「Office剪貼板」任務窗格(OfficeXP)或工具欄(Office2000)上,單擊「全部清空」或「清空『剪貼板』」。當清空「Office剪貼板」時,系統剪貼板也將同時被清空
二、打開的程序太多
如果同時打開的文檔過多或者運行的程序過多,就沒有足夠的內存運行其他程序。這時,對於多文檔界面(MDl)程序,如Word、Excel等,請關閉當前文檔外的所有文檔,並退出當前未使用的程序,然後或許你就能夠繼續執行因「內存不足」而被中斷的任務。
三、重新啟動計算機
如果只退出程序,並不重新啟動計算機,程序可能無法將內存資源歸還給系統。請重新啟動計算機以釋放系統資源,然後再次運行程序或執行被中斷的任務。
四、自動運行的程序太多
如果在啟動Windows時自動運行的程序太多,那麼,即使重新啟動計算機,也沒足夠的內存用來運行其它程序。
(一)確定設置為自動運行的程序是否太多
1.單擊「開始」,然後單擊「運行」。
2.在「打開」框中,鍵入「Msconfig」,單擊「確定」按鈕,打開「系統配置實用程序」窗口。
3.單擊「常規」選項卡,選中「選擇性啟動」復選鈕,清除「處理Win.ini文件」復選框和「載入啟動組項目」復選框。
4.單擊「確定」按鈕,當系統提示重新啟動計算機時,請單擊「是」按鈕。
重新啟動電腦後,如果內存不足的問題已經解決,你就可以將計算機配置為啟動時不打開任何程序。
(二)配置計算機不自動打開任何程序
1.恢復在Msconfig中所作的更改,方法是:在「系統配置實用程序」窗口,單擊「常規」選項卡,選擇「正常啟動」,單擊「確定」按鈕,然後重新啟動計算機。
2.刪除「啟動」文件夾中的所有快捷方式
①單擊「開始」,指向「設置」,然後單擊「任務欄和開始菜單」,系統彈出「任務欄屬性」對話框。
②單擊「開始菜單」選項卡,單擊「自定義」,再單擊「刪除」按鈕。
③單擊「啟動」文件夾旁的加號,以顯示設置為自動運行的程序列表。如果「啟動」文件夾旁沒有加號「+」,則表明沒有設置為自動運行的程序,請單擊「關閉」按鈕以終止此過程。
④單擊「啟動」文件夾中的每個快捷方式,然後單擊「刪除」按鈕。此操作將從「開始」菜單中刪除快捷方式,但並不從硬碟中刪除相應的程序。對於「啟動」文件夾中的每個快捷方式,重復該步驟。
⑤單擊「關閉」按鈕。
⑥單擊「確定」按鈕。
3.禁用從Win.ini文件載入的所有程序
①如上所述打開「系統配置實用程序」窗口。
②單擊「Win.ini」選項卡,雙擊「[windows]」,然後清除「Load=」和「Run=」復選框。
③單擊「確定」按鈕,當系統提示重新啟動計算機時,請單擊「是」按鈕。
五、讓Windows管理虛擬內存設置
如果沒有設置讓Windows管理虛擬內存或者禁用虛擬內存,那麼計算機可能無法正常工作,也可能收到「內存不足」的消息,或在運行某程序時出現相同的錯誤消息。
1.單擊「開始」,單擊「設置」,單擊「控制面板」,然後雙擊「系統」。
2.在「系統屬性」對話框中,單擊「性能」選項卡,然後單擊「虛擬內存」按鈕。
3.選中「讓Windows管理虛擬內存設置—(推薦)」選項,將計算機中可作為虛擬內存使用的硬碟空間量設置為默認值。此時,虛擬內存分頁「win386.swp」能夠根據實際內存的使用情況動態縮小和放大,最小容量為0,最大容量為硬碟的全部可用空間。
4.單擊「確定」按鈕。
六、增加可用磁碟空間
由於Windows以虛擬內存分頁文件的格式使用硬碟空間以模擬RAM(),所以,盡管已設置為讓Windows管理虛擬內存,但是當虛擬內存分頁文件所在的驅動器(默認為Windows系統所在的硬碟分區)沒有足夠的空間時,仍會出現「內存不足」的錯誤。此時,請執行以下一項或多項操作,增加Windows虛擬內存分頁文件所在驅動器上的可用空間:
1.清空回收站,方法是:在桌面上,右鍵單擊「回收站」,再單擊「清空回收站」。 2.從磁碟中刪除臨時文件,方法是:打開「Windows資源管理器」或「我的電腦」窗口,右鍵單擊要釋放其空間的磁碟,然後單擊「屬性」,在「常規」選項卡上,單擊「磁碟清理」按鈕,選中要刪除的不需要的文件前的復選框(如圖3),可以閱讀列表下面區域中每個文件類型的說明,單擊「確定」按鈕。
3.從磁碟中刪除過期的文件或已存檔的文件。
4.刪除從未使用過的所有文件。
七、程序文件被毀壞
如果僅僅是使用某個程序時,系統提示內存不足,而其他程序可以正常運行,那麼可能的原因是該程序文件被毀壞,從而導致內存問題。然而Windows並沒有確切地提示表明該程序已損壞,所以請嘗試刪除並重新安裝該程序,然後重新運行該程序。如果系統不再提示內存不足,那麼說明原程序文件確實被損壞。
八、使用內存優化軟體
內存優化軟體有很多,比如RAM Idle和Memo Kit就是比較出色的兩個。這些軟體都可以設置自動清空剪貼板、釋放被關閉程序未釋放的內存、對Win386.swp文件進行重新組織等,從而免除你手工操作的麻煩,達到自動釋放內存的目的,不妨一試!
九、查殺病毒
系統感染電腦病毒也是導致內存不足的罪魁禍首,當系統出現「內存不足」的錯誤時,請使用最新的防毒軟體查殺病毒,或者在清除電腦病毒之後,就解決了「內存不足」的問題。
③ 哪些情況會內存泄漏
1、資源釋放問題
。 Android 程序代碼的問題,長期保持某些資源,如 Context、Cursor、IO 流的引用,資源得不到釋放造成內存泄露。
2、對象內存過大問題
保存了多個耗用內存過大的對象(如 Bitmap、XML 文件),造成內存超出限制。
3、static 關鍵字的使用問題
static 是 Java 中的一個關鍵字,當用它來修飾成員變數時,那麼該變數就屬於該類,而不是該類的實例。所 以用 static 修飾的變數,它的生命周期是很長的,如果用它來引用一些資源耗費過多的實例(Context 的情況最 多),這時就要謹慎對待了。
public class ClassName { private static Context mContext; //省略 }
1
1
以上的代碼是很危險的,如果將 Activity 賦值到 mContext 的話。那麼即使該 Activity 已經 onDestroy,但是由 於仍有對象保存它的引用,因此該 Activity 依然不會被釋放。
我們舉 Android 文檔中的一個例子。
private static Drawable sBackground;
@Override protected void onCreate(Bundle state) {
super.onCreate(state);
TextView label = new TextView(this); //getApplicationContext label.setText("Leaks are bad");
if (sBackground == null) {
sBackground = getDrawable(R.drawable.large_bitmap);
}
label.setBackgroundDrawable(sBackground); setContentView(label);
}
1
2
3
4
5
6
7
8
9
1
2
3
4
5
6
7
8
9
sBackground 是一個靜態的變數,但是我們發現,我們並沒有顯式的保存 Context 的引用,但是,當 Drawable 與 View 連接之後,Drawable 就將 View 設置為一個回調,由於 View 中是包含 Context 的引用的,所以,實際 上我們依然保存了 Context 的引用。這個引用鏈如下: Drawable->TextView->Context 所以,最終該 Context 也沒有得到釋放,發生了內存泄露。
針對 static 的解決方案
① 應該盡量避免 static 成員變數引用資源耗費過多的實例,比如 Context。
② Context 盡量使用 ApplicationContext,因為 Application 的 Context 的生命周期比較長,引用它不會 出現內存泄露的問題。 ③ 使用 WeakReference 代替強引用。比如可以使用 WeakReference mContextRef;
4、線程導致內存溢出
線程產生內存泄露的主要原因在於線程生命周期的不可控。我們來考慮下面一段代碼。
。
public class MyActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
new MyThread().start();
}
private class MyThread extends Thread{
@Override
public void run() {
super.run(); //do somthing while(true)
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
這段代碼很平常也很簡單,是我們經常使用的形式。我們思考一個問題:假設 MyThread 的 run 函數是一個很費 時的操作,當我們開啟該線程後,將設備的橫屏變為了豎屏,一 般情況下當屏幕轉換時會重新創建 Activity,按照我 們的想法,老的 Activity 應該會被銷毀才對,然而事實上並非如此。 由於我們的線程是 Activity 的內部類,所以 MyThread 中保存了 Activity 的一個引用,當 MyThread 的 run 函 數沒有結束時,MyThread 是不會被銷毀的,因此它所引用的老的 Activity 也不會被銷毀,因此就出現了內存泄露的 問題。有些人喜歡用 Android 提供的 AsyncTask,但事實上 AsyncTask 的問題更加嚴重,Thread 只有在 run 函數不結 束時才出現這種內存泄露問題,然而 AsyncTask 內部的實現機制是運用了 ThreadPoolExcutor,該類產生的 Thread 對 象的生命周期是不確定的,是應用程序無法控制的,因此如果 AsyncTask 作為 Activity 的內部類,就更容易出現內存 泄露的問題。
針對這種線程導致的內存泄露問題的解決方案:
第一、將線程的內部類,改為靜態內部類(因為非靜態內部類擁有外部類對象的強引用,而靜態類則不擁有)。
第二、在線程內部採用弱引用保存 Context 引用。
④ 緩沖區溢出是什麼意思
緩沖區溢出
緩沖區是內存中存放數據的地方。在程序試圖將數據放到計算機內存中的某一位置,但沒有足夠空間時會發生緩沖區溢出。
緩沖區是程序運行時計算機內存中的一個連續的塊,它保存了給定類型的數據。問題隨著動態分配變數而出現。為了不用太多的內存,一個有動態分配變數的程序在程序運行時才決定給他們分配多少內存。如果程序在動態分配緩沖區放入太多的數據會有什麼現象?它溢出了,漏到了別的地方。一個緩沖區溢出應用程序使用這個溢出的數據將匯編語言代碼放到計算機的內存中,通常是產生root許可權的地方。單單的緩沖區溢出,並不會產生安全問題。只有將溢出送到能夠以root許可權運行命令的區域才行。這樣,一個緩沖區利用程序將能運行的指令放在了有root許可權的內存中,從而一旦運行這些指令,就是以root許可權控制了計算機。總結一下上面的描述。緩沖區溢出指的是一種系統攻擊的手段,通過往程序的緩沖區寫超出其長度的內容,造成緩沖區的溢出,從而破壞程序的堆棧,使程序轉而執行其它指令,以達到攻擊的目的。據統計,通過緩沖區溢出進行的攻擊占所有系統攻擊總數的80%以上。
⑤ 全局變數太多是否會導致堆棧溢出
不會
首先全局變數是不佔堆棧空間的
全局全量編譯的時侯是放在.data段的
只有沒有static修飾的局部變數在程序運行的時侯臨時分配在棧上,new,或malloc等定義的變數分配在堆上
如果想讓棧溢出也很容易,棧也有其極限的,只要定義一個無限遞歸函數,讓它沒完沒了的遞歸就行了,一會就崩了。
建議學一下編譯原理