2023-09-10 · 閱讀時間 9 分鐘

Monosnap 記憶體洩漏:為何您的螢幕截圖工具會耗盡所有 RAM

您打開任務管理器,想弄清楚為什麼您的電腦感覺遲鈍。它就在那裡:Monosnap,一個螢幕截圖工具,消耗了 600 MB 的 RAM。或者 800 MB。或者超過一 GB。對於一個偶爾捕捉螢幕矩形區域的應用程式來說,這簡直荒謬。

如果這聽起來很熟悉,您並不孤單。Monosnap 在 Windows 上的記憶體洩漏是螢幕截圖工具社群中最常報告的問題之一,並且它已在應用程式的多個版本中持續存在。讓我們來分析一下實際發生了什麼,您可以做些什麼,以及何時應該切換到一個 完全不同的工具.

什麼是記憶體洩漏?

當應用程式為某項任務分配 RAM,但在任務完成後從未正確釋放它時,就會發生記憶體洩漏。每次操作都會消耗少量記憶體,而這些記憶體從未返回給系統。經過數小時和數天的運行時間,這些微小的分配會累積成顯著的記憶體消耗。

記憶體洩漏與應用程式設計上就使用大量記憶體不同。視訊編輯器可能會合理地使用數 GB 記憶體,因為它正在處理大型檔案。一個在系統匣中閒置卻使用 800 MB 記憶體的螢幕截圖工具,並沒有做任何足以證明這種消耗是合理的事情 — 它正在洩漏。

是什麼導致 Monosnap 的記憶體洩漏

確切的內部原因取決於您運行的版本,但根據對應用程式行為和社群報告的分析,有幾個促成因素:

影像緩衝區保留

當 Monosnap 捕捉螢幕截圖時,它會創建一個捕捉區域的記憶體點陣圖。在一個行為良好的應用程式中,一旦影像被保存、複製或上傳,這個緩衝區就會被釋放。在 Monosnap 中,對這些緩衝區的引用似乎比必要的時間更長,阻止了垃圾回收器回收記憶體。

當您在一個會話中截取多個螢幕截圖時,這一點最為明顯。每次捕捉都會增加累積的記憶體,並且增長大致與捕捉的數量和大小成比例。

Electron 開銷

Monosnap 介面的部分使用了 Electron,它本質上是一個運行網頁應用程式的 Chromium 瀏覽器。Electron 應用程式僅僅為了運行時就帶有 80-150 MB 的基本記憶體開銷。當與應用程式自身的記憶體管理問題結合時,這會創建一個只會不斷增長的高起點。

縮圖和預覽快取

Monosnap 維護著最近捕捉的縮圖和預覽。這個快取似乎沒有有效的尺寸限制或清除策略,這意味著隨著您使用應用程式,它會無限增長。

GPU 資源處理

在配備獨立 GPU 的系統上,Monosnap 的螢幕捕捉管線可能無法正確釋放 GPU 記憶體資源。這不一定會顯示在任務管理器的標準記憶體欄中,但會增加整體系統記憶體壓力並可能導致不穩定。

如何判斷您是否受到影響

打開任務管理器 (Ctrl+Shift+Esc) 並檢查 Monosnap 的記憶體使用量。以下是一個粗略的指南:

  • 低於 100 MB: 剛啟動的實例的正常範圍。
  • 100-300 MB: 偏高。可能有一些記憶體洩漏累積。重新啟動可暫時解決。
  • 300-800 MB: 嚴重洩漏。您的系統正受到影響。
  • 超過 800 MB: 極度嚴重。您可能正在經歷全系統範圍的緩慢。

如果您發現記憶體隨著時間穩定增長,但沒有相應的活動,則表示存在洩漏。

暫時解決方案

如果您想在記憶體問題存在的情況下繼續使用 Monosnap,以下是最有效的緩解措施:

1. 定期重新啟動 Monosnap

最簡單的方法:每隔幾小時退出並重新啟動 Monosnap。這會釋放所有累積的記憶體。如果您想自動化此過程,可以設定一個 Windows 工作排程器任務,按排程終止並重新啟動 Monosnap。

2. 禁用自動啟動功能

如果 Monosnap 隨 Windows 啟動但您只偶爾使用它,請禁用自動啟動,並僅在需要時啟動它。這可以最大程度地減少記憶體累積的時間窗口。

3. 清除擷取歷史記錄

定期清除 Monosnap 的擷取歷史記錄和快取縮圖。這可以透過應用程式設定完成。它不會修復核心洩漏,但會減少縮圖快取部分。

4. 禁用雲端同步功能

一些用戶報告稱,禁用自動雲端上傳可以減少記憶體增長。上傳佇列似乎即使在上傳完成後仍保留對圖像資料的引用。如果您不需要自動上傳,請將其關閉並在需要時手動上傳。

5. 降低擷取品質

降低擷取解析度或壓縮級別意味著更小的圖像緩衝區。這不會修復洩漏,但會減緩記憶體增長的速度,因為每個洩漏的緩衝區都更小。

何時切換工具

暫時解決方案在一段時間內是可行的,但管理記憶體洩漏是持續的維護工作,您不應該在螢幕截圖工具上執行此類操作。如果出現以下情況,請考慮切換工具:

  • 您讓電腦長時間運行(過夜、週末)
  • 您全天擷取大量螢幕截圖(開發人員、QA、設計師)
  • 您的系統 RAM 有限(8 GB 或更少),其中 500 MB 的洩漏在比例上是顯著的
  • 您曾因以下原因經歷資料遺失: Monosnap 崩潰 由記憶體耗盡引起
  • 您每週花費數分鐘以上處理 Monosnap 重新啟動

永久解決方案:改用原生工具

Monosnap 記憶體問題的根本原因在於其架構。基於 Electron 且記憶體管理不足的應用程式總是會出現這種行為。任何使用者端的解決方法都無法修復應用程式程式碼中存在的記憶體洩漏。

Maxisnap 專為解決這類問題而設計,是一款原生的 Windows 應用程式。它沒有 Electron 層,也沒有網頁執行時的開銷。影像緩衝區以確定性方式分配和釋放。我們的測試顯示,即使在連續使用 72 小時以上並執行活躍的擷取工作負載後,記憶體消耗仍穩定在 30-40 MB 左右。

其功能集涵蓋了核心的螢幕截圖工作流程:區域截圖、視窗截圖、全螢幕截圖、註釋(箭頭、文字、形狀、模糊、編號)、雲端上傳和快捷鍵自訂。請注意,Maxisnap 不包含錄影功能 — 它專注於螢幕截圖和註釋。切換大約需要五分鐘 — 我們有 逐步遷移指南 如果您想保留您的快速鍵設定。

其他替代方案如何?

如果 Maxisnap 不是您正在尋找的工具,還有其他輕量級選項:

  • ShareX — 免費、開源、功能極其豐富但複雜。記憶體使用量合理。請參閱我們的 與 ShareX 的比較.
  • Greenshot — 免費、非常輕量級,但功能有限且介面老舊。
  • Windows 剪取工具 — 內建於 Windows,無需安裝,但註釋功能有限且無雲端功能。

我們在我們的 完整 Monosnap 替代方案指南.

總結

螢幕截圖工具應該是隱形的基礎設施 — 隨時待命,永不礙事。當它消耗的 RAM 比您的瀏覽器還多時,就表示在根本層面上出了問題。無論您是透過手動管理 Monosnap 的記憶體來解決,還是切換到一個 沒有此問題的工具,重要的是不要將其視為正常。您的 RAM 有更重要的事情要做。

準備好嘗試更好的截圖工具了嗎?

免費下載 Maxisnap,體驗不同之處。

免費下載 Maxisnap