2025-08-12 · 8 分鐘閱讀

為什麼 Monosnap 會讓您的電腦凍結以及如何解決

您正在工作期間 — IDE 開著,瀏覽器開了二十個分頁,Slack 正在運行,可能還有 Docker 在背景。您的電腦開始變慢。滑鼠卡頓。應用程式需要五秒鐘才能回應。您打開工作管理員,發現 Monosnap 正在使用 800 MB、1.2 GB,有時甚至超過 2 GB 的 RAM。

這不是您報告並期望修復的錯誤。這是一個根植於 Monosnap 架構的系統性問題。用戶多年來一直報告此問題,但由於其根本原因與 Monosnap 的構建方式息息相關,因此尚未解決。

本文解釋了它發生的原因、如何診斷、臨時解決方案,以及 — 當您受夠了 — 永久解決方案。

根本原因:Electron 和記憶體洩漏

Monosnap 是基於 Electron 構建的,這是一個透過捆綁 Chromium(Chrome 背後的引擎)和 Node.js 將網路應用程式作為桌面應用程式運行的框架。每個 Electron 應用程式本質上都在背景運行一個網路瀏覽器,這就是為什麼 Electron 應用程式往往比原生應用程式消耗更多資源的原因。

Electron 本身並不會固有地導致記憶體洩漏 — 精心構建的 Electron 應用程式能有效管理記憶體。但 Electron 使記憶體洩漏更容易引入且更難檢測。JavaScript 的垃圾回收、Chromium 的渲染管線和 Node.js 的事件循環的結合,創造了多個可能發生記憶體洩漏的表面。

在 Monosnap 的案例中,根據用戶報告和系統分析,出現了幾種已報告的洩漏模式:

影像緩衝區累積

Monosnap 捕獲的每個螢幕截圖都作為影像緩衝區存在於記憶體中。在一個良好實作的工具中,這些緩衝區在影像儲存或上傳後會被釋放。在 Monosnap 中,用戶報告表明,來自先前捕獲的影像緩衝區並未完全釋放,導致記憶體隨著每次截圖而增長。在一個會話中截取 50 張螢幕截圖,您將有 50 個部分保留的影像緩衝區消耗 RAM。

渲染器程序膨脹

Electron 應用程式使用渲染器程序(本質上是 Chrome 瀏覽器分頁)來呈現其使用者介面。Monosnap 的編輯器、預覽和設定視窗都各自作為渲染器程序運行。如果這些程序在視窗關閉時未正確清理,它們的記憶體分配將會持續存在。在長時間使用並多次開啟和關閉編輯器的情況下,這會導致記憶體累積。

事件監聽器洩漏

已註冊但從未取消註冊的 JavaScript 事件監聽器是 Electron 應用程式中記憶體洩漏的經典來源。每個監聽器都持有一個引用,阻止垃圾回收器釋放相關記憶體。在一個持續監聽全域快捷鍵、剪貼簿變更和顯示事件的工具中,即使是微小的監聽器洩漏也會隨著時間累積。

如何診斷問題

如果您懷疑 Monosnap 導致您的系統變慢,以下是確認方法:

工作管理員檢查

  1. 按下 Ctrl+Shift+Esc 以開啟工作管理員
  2. 如果您看到簡化視圖,請點擊「更多詳細資料」
  3. 點擊「記憶體」欄位標題以按 RAM 使用量排序
  4. 尋找「Monosnap」條目 — 可能有多個(每個 Electron 程序一個)
  5. 記下所有 Monosnap 程序佔用的總記憶體

螢幕截圖工具的正常閒置記憶體為 30-60 MB。如果 Monosnap 的總記憶體超過 300 MB,則表示存在洩漏。超過 500 MB 則情況嚴重。超過 1 GB 則會積極降低您的系統效能。

資源監視器深入探討

如需更多詳細資訊,請開啟資源監視器(resmon 從執行對話框):

  1. 前往「記憶體」分頁
  2. 尋找 Monosnap 程序
  3. 檢查「工作集」(實際使用的實體 RAM)和「私有」(Monosnap 專用的記憶體)
  4. 在正常使用 30 分鐘內觀察這些值 — 如果它們在您沒有截圖的情況下呈上升趨勢,則確認存在洩漏

暫時性解決方案

這些權宜之計只能管理症狀,無法修復根本的洩漏問題。

定期重新啟動 Monosnap

最簡單的權宜之計。右鍵點擊 Monosnap 的系統匣圖示,退出,然後重新啟動。這會清除所有累積的記憶體。有些使用者會設定 Windows 工作排程器任務,每隔幾小時重新啟動 Monosnap。

停用雲端同步

Monosnap 的雲端同步功能會在記憶體中保留額外的連線和資料。如果您不使用雲端儲存,請在「設定」中停用它。這不會完全消除洩漏,但可能會降低記憶體增長的速度。

減少背景活動

停用您不使用的功能:剪貼簿監控、自動截圖、整合外掛程式。每個啟用的功能都會增加事件監聽器和可能洩漏的背景程序。

使用 Windows 設定記憶體限制

您可以建立一個腳本,監控 Monosnap 的記憶體使用情況,並在超過閾值時自動重新啟動它:

# PowerShell script — save as restart-monosnap.ps1
$threshold = 500MB
$process = Get-Process -Name "Monosnap" -ErrorAction SilentlyContinue
if ($process -and ($process.WorkingSet64 -gt $threshold)) {
    Stop-Process -Name "Monosnap" -Force
    Start-Sleep -Seconds 2
    Start-Process "C:\Program Files\Monosnap\Monosnap.exe"
}

透過工作排程器將其設定為每小時運行。這是一個權宜之計,但很有效。

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

解決基於 Electron 的記憶體洩漏的永久方法是停止使用基於 Electron 的工具。原生螢幕截圖應用程式——直接在作業系統的 API 上構建,沒有網頁瀏覽器執行環境——不會有相同的記憶體洩漏潛在範圍。

Maxisnap 是為 Windows 原生打造的。它不使用 Electron、Chromium 或 Node.js。它直接使用 Windows API 進行螢幕截圖,GDI+ 進行影像處理,並使用輕量級 UI 框架來構建註釋編輯器。其結果是:

  • ~35 MB 閒置記憶體 (RAM) — 並維持在 ~35 MB。不會隨時間增長。沒有洩漏。
  • 安裝後小於 70 MB — 相較於 Monosnap 的 200+ MB(其中大部分是捆綁的 Chromium)
  • 零個 Electron 程序 — 在工作管理員中只有一個程序,可預測的資源使用量
  • 無需重新啟動 — 可連續運行數週,記憶體不會增長

功能集涵蓋了大多數 Monosnap 用戶所需的一切:區域截圖、全螢幕截圖、11 種註釋工具(包括用於敏感資料的模糊處理),並透過 SFTP、FTP、S3 或 HTTP 上傳。 查看完整比較.

從 Monosnap 遷移到 Maxisnap

轉換過程大約需要五分鐘:

  1. 下載 Maxisnap — 小於 70 MB,約一分鐘內完成安裝
  2. 學習快捷鍵Ctrl+Alt+5 (區域), Ctrl+Alt+6 (全螢幕), Ctrl+Alt+7 (自動上傳)。 完整快捷鍵指南在此.
  3. 設定上傳 (選用)— 如果您使用 Monosnap 的雲端服務,設定 SFTP 上傳到您自己的伺服器 以實現類似的截圖即連結工作流程,而無需依賴 Monosnap 的雲端服務。
  4. 停用 Monosnap 啟動 — 設定 > 一般 > 取消勾選「隨系統啟動」
  5. 啟用 Maxisnap 啟動 — 設定 > 勾選「隨 Windows 啟動」

您從 Monosnap 雲端服務截取的螢幕截圖仍然可以存取,即使在解除安裝桌面應用程式後,也能透過 Monosnap 的網頁介面存取。新的螢幕截圖將透過 Maxisnap 處理。

為什麼這個問題無法解決

Electron 記憶體洩漏因其分佈在框架的各個層面而臭名昭著地難以修復。渲染器程序中的洩漏需要與主程序或 Node.js 層中的洩漏不同的調試方法。在複雜的 Electron 應用程式中找到並修復每一個洩漏本質上是一個持續的項目 — 而非一次性修復。

Monosnap 團隊需要投入大量的工程精力進行記憶體分析和洩漏修復,或者在不使用 Electron 的情況下重寫應用程式。鑑於此問題已在多個主要版本中持續存在,這兩者似乎都不在他們的路線圖上。

對於用戶而言,這意味著問題不會消失。您可以透過重新啟動和變通方法來管理它,或者透過切換到不帶有 Electron 開銷的工具來徹底解決它。

最終想法

螢幕截圖工具應該是隱形的。它應該靜靜地待在您的系統匣中,消耗微不足道的資源,並在您按下快捷鍵時捕捉您的螢幕。它不應該是您的電腦在演示期間凍結的原因。

如果 Monosnap 的記憶體使用量正在影響您的工作,上述的臨時修復方法將會有所幫助。但永久的解決方案顯而易見:使用專為此任務打造的工具,而無需在背景運行網頁瀏覽器的負擔。

下載 Maxisnap 並比較您前後的任務管理器。差異立竿見影。 個人使用免費 — 試用無需任何費用。

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

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

免費下載 Maxisnap