本文關鍵要點:
1)當應用程序無法返回分配的內存時,就會發生內存泄漏,逐漸消耗更多內存并可能導致系統崩潰。
2)用戶可以通過監控系統的 RAM 使用情況來識別任何穩定消耗更多內存的應用程序,或通過進程來檢測內存泄漏。
3)修復和防止內存泄漏的方法之一是使操作系統以及用戶使用的應用程序保持最新狀態。
無論您的計算機速度有多快、多新,內存泄漏等問題仍然會影響體驗。但究竟什么是內存泄漏,它是如何發生的?
什么是內存泄漏?
計算機內存稱為隨機存取存儲器 (RAM),它臨時存儲與計算機上運行的操作系統、程序和服務相關的信息。之所以使用 RAM,是因為它速度夠快(比 SSD 還快),能夠通過存儲臨時數據來提高計算機的性能。
應用程序根據需要使用內存,存儲與操作經常請求的數據等相關的信息。當應用程序停止使用分配的內存時,它表示內存現在是空閑的。但是,如果應用程序繼續運行而不返回分配的內存,它將逐漸消耗越來越多的可用內存,最終導致系統崩潰。
如何檢測內存泄漏
當系統出現內存不足時,用戶大都會收到一條警告消息,提示“您的計算機內存不足”。在所有主要操作系統中,我們都能收到類似的消息,一旦看到它,可能會導致計算機性能下降,系統開始出現故障。
檢查內存泄漏的最簡單方法是查看系統的 RAM 使用情況。如果您看到應用程序或進程正在穩步消耗越來越多的內存,則肯定表明存在問題,這有可能就是內存泄漏。例如,在下圖中,google Chrome 使用了大量內存。當然,我們確實打開了五個 Chrome 窗口,其中大約有 20 個打開的選項卡和 32GB RAM。因此,雖然這個數字很高,但實際上并不是問題。現在,如果我查看進程列表并發現 Spotify 使用類似數量的 RAM,這將表明存在問題和潛在的內存泄漏問題。
如何在 windows 上檢查 RAM 使用情況
1)右鍵單擊任務欄,然后選擇“任務管理器”。
2)在“進程”選項卡上,對“內存”列進行排序,使最大值位于頂部。
3)評估頂部的應用程序是否使用了正確的內存量。
若要關閉進程,請右鍵單擊該進程,然后選擇“結束任務”。
如何在macOS上檢查RAM使用情況
1)前往應用程序>實用程序,然后打開活動監視器。
2)選擇“活動監視器”窗口頂部的“內存”選項卡。
3)對“內存”列進行排序,使最大值位于頂部。
4)選擇要結束的應用或進程,然后選擇“停止”按鈕。
然后,macOS 會為您提供兩個選項 :“退出”或“強制退出”。后者將立即嘗試終止該過程并刪除任何未保存的數據。
如何使用系統監視器檢查 linux 上的 RAM 使用情況
由于每個 Linux 桌面環境都有不同版本的系統監視器,因此遵循的步驟可能會有所不同。通常,我們將在開始菜單、等效的開始菜單或系統搜索工具中輸入系統監視器,然后選擇最佳匹配項。
系統監視器打開后,對“內存”選項卡或列進行排序,使最大值位于頂部,并確定是否有任何應用或進程使用過多的內存。還有用于檢查系統運行狀況的 Linux 命令,可以顯示 RAM 使用情況。
內存泄漏的后果
內存泄漏的后果和問題取決于客戶端或服務器應用程序的使用。
客戶端應用程序(臺式機和筆記本)
這些設備內存泄漏的后果不是很嚴重,因為分配的內存會在應用程序終止時釋放。因此,不存在系統不穩定。內存使用率過高會遇到的一些問題可能是:
1)您的系統可能會開始變慢。
2)計算機上的應用程序可能會突然關閉。
3)計算機的應用程序代碼分配內存可能會崩潰并導致錯誤。
但是,在更嚴重的情況下,內存泄漏可能會帶來安全問題,可能導致數據丟失等。
服務器應用程序
服務器的內存泄漏問題會很嚴重,因為服務器通常會長時間運行而不重新啟動。產生的問題與桌面應用程序的問題相同,內存會在數天、數周和數月內消耗,服務器性能會下降。錯誤開始出現,導致服務器最終停止工作。
與客戶端應用程序類似,長期存在的內存泄漏可能會帶來安全問題,從而破壞數據,造成數據丟失。
如何防止內存泄漏
在編碼方面,大多數編程語言都具有幫助開發人員進行自動內存管理的功能,例如垃圾回收站,它有助于釋放未使用的內存。垃圾回收站有多種類型,了解應用程序的垃圾回收站的功能是防止內存泄漏的重要步驟。
防止內存泄漏的另一種方法是編寫代碼來處理不需要的資源。我們通過編寫特定的代碼,向應用程序指示資源的工作已完成,并且不再使用內存。確保代碼完全執行,以避免發生內存泄漏。
但是,如果你沒有編碼,只是在家用電腦上遇到內存泄漏,重新啟動系統將修復內存泄漏,并可能防止它再次發生(如果這是一個臨時錯誤)。您還應該更新您正在使用的操作系統,無論是 Windows、macOS 還是 Linux。通過錯誤代碼或其他錯誤引入的內存泄漏可能會通過更新得到補救,無論是對操作系統還是相關程序。讓您的機器保持最新狀態始終很重要!
如何使用 Windows 的內置工具修復內存泄漏
之前,我們詳細介紹了如何發現和修復 Windows、macOS 和 Linux 的內存泄漏。但是,您可以嘗試一些其他方法來修復 Windows 上的內存泄漏。
Windows 資源監視器
Windows 資源監視器還可以通過提供系統資源的實時數據來幫助您了解內存泄漏問題。
1)在“開始”菜單搜索欄中輸入“資源監視器”,然后選擇“最佳匹配”。
2)選擇“內存”選項卡。
3)對“提交”選項卡進行排序以顯示最大值。
和以前一樣,您必須弄清楚是否有任何應用程序使用了過多的內存。
如何禁用啟動時運行的程序
有時,啟動時運行的程序可能會導致內存泄漏。要解決此問題,請禁用該應用程序以確保它在啟動系統時不會再引起問題。
1)按 Ctrl + Shift + Esc 打開任務管理器,然后打開“啟動”選項卡。
2)找到要在啟動時停止啟動的程序。
3)右鍵單擊并選擇禁用。
請注意,盡管這將阻止任何與啟動相關的內存泄漏問題,但如果稍后打開程序,內存泄漏問題可能會持續存在。如果是這種情況,我們建議卸載該程序。
減少內存泄漏,幫助計算機提高性能
內存泄漏可能會顯著降低計算機的速度,最終導致計算機崩潰。它們的范圍從令人沮喪到危險,并導致嚴重的系統穩定性問題。
請記住,解決內存泄漏問題的最佳選擇之一是更新您的系統和您正在使用的應用程序,因為內存泄漏可能源于某種錯誤。
原文標題:What Is a Memory Leak and How Do They HAppen?
原文作者:GAVIN PHILLIPS