メモリリークはあなたのコンピューターのせいではありません
もし、それがあなたのマシン — 古いドライバー、Windows 11の奇妙な挙動、暴走したChromeタブ — のせいではないかと疑問に思っていたなら、それは違います。リークはMonosnapの内部にあり、何年も前から存在します。検索してください r/monosnap そうすれば、同じパターンを説明するスレッドが次々と見つかるでしょう。
内部で何が起こっているかというと、Monosnapが領域をキャプチャするたびに、生のピクセルデータを保持するのに十分な大きさのフレームバッファを割り当てます。2560 x 1440の画面の場合、これはおよそ14 MBです。エディターが閉じると、これらのバッファはOSに解放されるべきですが、Monosnapではしばしば解放されません。それらはElectronレンダラーのヒープに保持され、実行されないか、実行が遅すぎるガベージコレクションパスを待っています。1日の作業で40回以上のキャプチャを行うと、保持されたバッファが数百メガバイトのファントムRAMとして蓄積されます。
解決策は別のアプリです
Monosnapのアーキテクチャは、リークをElectron自体に結びつけており、それを修正するにはキャプチャパイプラインの書き換えが必要です。その書き換えは5年間行われていません。現実的な解決策は、そもそもこの問題がないように設計されたツールを使うことです。
MaxisnapはPyQt6上に構築され、PyInstallerで単一のWin32実行可能ファイルにコンパイルされています。Chromiumプロセスはありません。各キャプチャは QImageを割り当て、エディターがそれを参照し、ウィンドウが閉じると参照が破棄され、メモリはすぐにOSに戻されます — これは、PyQtの所有権モデルとPythonの参照カウントが、世代別GCを待つのではなく、積極的に解放するためです。
経験的に:Maxisnapは起動時にアイドル状態で約50 MBです。定期的なキャプチャを伴う72時間の連続実行後も、約50 MBのままです。上記のグラフは実際のログに基づいています。
切り替え手順
- 0:00Maxisnapをダウンロード。 「ダウンロードページ」にアクセスし、 Maxisnapをインストールします。。ワンクリックで63 MB。
- 0:15Monosnapを終了します。 トレイアイコンを右クリックし、「終了」を選択します。RAMが600 MB減少するのを確認してください。
- 0:30インストーラーを実行します。 デフォルトのインストールパス、再起動は不要です。
- 0:45Ctrl+Alt+5 を押してください。 いつも使っている同じホットキーで最初のキャプチャを行います。エディターは瞬時に開きます。
- 0:60完了。 サーバーへのアップロードを希望する場合は、設定でSFTP/S3の認証情報を貼り付けてください。
メモリリークに関する質問
1日に5枚しかスクリーンショットを撮りません。それでもリークの影響を受けますか?
影響は少ないですが、はい。キャプチャしていないときでもMonosnapがクリップボードとシステムトレイをポーリングするため、アイドル時のメモリは増え続けます。使用頻度が低い場合は増加が遅くなりますが、止まることはありません。
アプリを再起動すると改善しますか?
一時的に。終了して再起動すると、約180 MBに戻ります。しかし、リークに気づくほとんどのユーザーは、スクリーンショットツールを一日中実行し続けているため、何度も再起動することは彼らが望むこととは逆です。
macOS版Monosnapはどうですか?
macOSではメモリモデルが異なるため、リークはそれほど深刻ではありませんが、ユーザーは依然として徐々に増加すると報告しています。MaxisnapのmacOSビルドは実験的です。Windowsユーザーの方は、今すぐ切り替えてください。
あなたのRAMが喜ぶでしょう
Maxisnapは無料です。インストールには60秒かかります。使い慣れたホットキーをそのまま使用できます。
Maxisnapをダウンロード関連: 動作が遅くなった理由 · フリーズの修正 · 一般的な代替品