![應用程式關閉時是否會從 RAM 中刪除?](https://rvso.com/image/1303066/%E6%87%89%E7%94%A8%E7%A8%8B%E5%BC%8F%E9%97%9C%E9%96%89%E6%99%82%E6%98%AF%E5%90%A6%E6%9C%83%E5%BE%9E%20RAM%20%E4%B8%AD%E5%88%AA%E9%99%A4%EF%BC%9F.png)
我注意到,當您打開一個程序,關閉它,然後再次打開它時,第二次打開的速度似乎要快得多。
這是因為第二次它已經在RAM中了嗎?
換句話說,我假設一旦程式關閉,它的記憶體空間就會被標記為未使用。如果在使用舊記憶體空間之前再次開啟該程序,是否必須從磁碟重新載入整個程式?
答案1
一般來說,當應用程式關閉/結束時,它佔用的儲存空間會立即釋放,如果您重新啟動應用程序,它將重新從磁碟載入到「新」儲存中。
最大的例外是在某些「智慧型手機」上,有時當您「結束」應用程式時,它並沒有真正立即結束,而只是「後台」一段時間,假設您可能會在不久的將來重新啟動它未來。但如果您在一段時間內不使用該應用程序,它最終會被作業系統終止並回收儲存。 (據我所知,這種方案不用於普通的微軟或蘋果電腦,僅用於手機。)
另一個更技術性的例外是,即使程式結束並且其儲存被釋放,程式的磁碟映像(或至少其部分)可能仍然存在於磁碟「快取」中,並且可能更容易存取第二次比第一次。這可能是您認為第二次啟動速度更快的原因。
不過,啟動速度更快還有另一個更簡單的原因。當您結束一個應用程式然後立即重新啟動它時,儲存中就會出現一個非常適合您的程式的方便的「漏洞」。如果您稍後啟動它,在運行其他操作後,作業系統必須費力尋找可用存儲,這通常意味著它必須「調出」RAM 中的其他數據,這是一個耗時的過程。
答案2
當程式開啟時,它並不比程式關閉時更多地被使用或未使用。記憶體是用過的如果它包含有用的信息。它包含程式運行時和程式不再運行時的有用資訊。
事實上,大多數作業系統根本不考慮程式是否正在運行。如果僅僅因為程式運行而不會存取某些內容,為什麼要將其保留在記憶體中?為什麼僅僅因為當時運行的程式沒有使用某些東西就從記憶體中丟棄它?
作業系統透過存取資料來運行。當然,保存永遠無法存取的資料的記憶體被認為是空閒的。