لماذا يتجمد جهاز الكمبيوتر الخاص بك بسبب Monosnap وكيفية إصلاح ذلك
أنت في منتصف جلسة عمل — بيئة تطوير متكاملة مفتوحة، متصفح به عشرين علامة تبويب، Slack يعمل، ربما Docker في الخلفية. يبدأ جهاز الكمبيوتر الخاص بك في التباطؤ. الفأرة تتلعثم. تستغرق التطبيقات خمس ثوانٍ للاستجابة. تفتح مدير المهام وتجده هناك: Monosnap يستخدم 800 ميجابايت، 1.2 جيجابايت، وأحيانًا أكثر من 2 جيجابايت من ذاكرة الوصول العشوائي.
هذا ليس خطأً أبلغت عنه وتتوقع إصلاحه. هذه مشكلة نظامية متجذرة في بنية Monosnap. تم الإبلاغ عنها من قبل المستخدمين لسنوات، ولم يتم حلها لأن السبب الأساسي جوهري لطريقة بناء Monosnap.
تشرح هذه المقالة سبب حدوث ذلك، وكيفية تشخيصه، والحلول المؤقتة، وعندما تكتفي — الحل الدائم.
السبب الجذري: Electron وتسرب الذاكرة
تم بناء Monosnap على Electron، وهو إطار عمل يشغل تطبيقات الويب كتطبيقات سطح مكتب عن طريق تجميع Chromium (المحرك وراء Chrome) و Node.js. كل تطبيق Electron يشغل في الأساس متصفح ويب في الخلفية، وهذا هو السبب في أن تطبيقات Electron تميل إلى استهلاك موارد أكثر من التطبيقات الأصلية.
Electron بحد ذاته لا يسبب تسرب الذاكرة بطبيعته — تطبيقات Electron المبنية جيدًا تدير الذاكرة بفعالية. لكن Electron يجعل تسرب الذاكرة أسهل في التقديم وأصعب في الكشف. إن الجمع بين جمع البيانات المهملة في JavaScript، وخط أنابيب عرض Chromium، وحلقة أحداث Node.js يخلق أسطحًا متعددة حيث يمكن أن تتسرب الذاكرة.
في حالة Monosnap، تظهر عدة أنماط تسرب مُبلغ عنها من تقارير المستخدمين وتحليل النظام:
تراكم مخزن الصور المؤقت
كل لقطة شاشة يلتقطها Monosnap توجد كمخزن صور مؤقت في الذاكرة. في أداة جيدة التنفيذ، يتم تحرير هذه المخازن المؤقتة بعد حفظ الصورة أو تحميلها. في Monosnap، تشير تقارير المستخدمين إلى أن مخازن الصور المؤقتة من اللقطات السابقة لا يتم تحريرها بالكامل، مما يتسبب في نمو الذاكرة مع كل لقطة شاشة يتم التقاطها. التقط 50 لقطة شاشة في جلسة واحدة، وسيكون لديك 50 مخزن صور مؤقت محتفظ بها جزئيًا تستهلك ذاكرة الوصول العشوائي.
تضخم عملية العرض
تستخدم تطبيقات Electron عمليات عرض (وهي في الأساس علامات تبويب Chrome) لواجهة المستخدم الخاصة بها. تعمل نوافذ محرر Monosnap والمعاينة والإعدادات كل منها كعمليات عرض. إذا لم يتم تنظيف هذه العمليات بشكل صحيح عند إغلاق النوافذ، فإن تخصيصات الذاكرة الخاصة بها تستمر. على مدار جلسة طويلة مع فتح وإغلاق المحرر عدة مرات، يتراكم هذا.
تسربات مستمعي الأحداث
مستمعو أحداث JavaScript الذين يتم تسجيلهم ولكن لا يتم إلغاء تسجيلهم أبدًا هم مصدر كلاسيكي لتسربات الذاكرة في تطبيقات Electron. يحتفظ كل مستمع بمرجع يمنع جامع البيانات المهملة من تحرير الذاكرة المرتبطة. في أداة تستمع باستمرار لمفاتيح الاختصار العامة وتغييرات الحافظة وأحداث العرض، تتفاقم حتى تسربات المستمع الصغيرة بمرور الوقت.
كيفية تشخيص المشكلة
إذا كنت تشك في أن Monosnap يسبب تباطؤ نظامك، فإليك كيفية تأكيد ذلك:
فحص مدير المهام
- اضغط
Ctrl+Shift+Escلفتح مدير المهام - انقر على "مزيد من التفاصيل" إذا كنت ترى العرض المبسط
- انقر على رأس عمود "الذاكرة" للفرز حسب استخدام ذاكرة الوصول العشوائي (RAM)
- ابحث عن إدخالات "Monosnap" — قد يكون هناك العديد منها (واحد لكل عملية Electron)
- لاحظ إجمالي الذاكرة عبر جميع عمليات Monosnap
الذاكرة الخاملة العادية لأداة لقطة الشاشة هي 30-60 ميجابايت. إذا كان إجمالي Monosnap أعلى من 300 ميجابايت، فلديك تسرب. أعلى من 500 ميجابايت يعتبر خطيرًا. أعلى من 1 جيجابايت وهو يؤدي إلى تدهور نظامك بشكل فعال.
تعمق في مراقب الموارد
لمزيد من التفاصيل، افتح مراقب الموارد (resmon من مربع حوار التشغيل):
- اذهب إلى علامة تبويب الذاكرة
- ابحث عن عمليات Monosnap
- تحقق من "مجموعة العمل" (ذاكرة الوصول العشوائي الفعلية المستخدمة) و "خاص" (ذاكرة حصرية لـ Monosnap)
- راقب هذه القيم على مدار 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. تطبيقات لقطات الشاشة الأصلية — المبنية مباشرة على واجهات برمجة تطبيقات نظام التشغيل دون وقت تشغيل متصفح الويب — لا تحتوي على نفس مساحة سطح تسرب الذاكرة.
Maxisnap مبني أصلاً لـ Windows. لا يستخدم Electron أو Chromium أو Node.js. يستخدم Windows API مباشرة لالتقاط الشاشة، و GDI+ لمعالجة الصور، وأطر عمل واجهة المستخدم خفيفة الوزن لمحرر التعليقات التوضيحية. والنتيجة:
- ~35 ميجابايت من ذاكرة الوصول العشوائي الخاملة — ويبقى عند ~35 ميجابايت. لا يوجد نمو بمرور الوقت. لا تسرب.
- أقل من 70 ميجابايت مثبتة — مقارنة بـ Monosnap الذي يتجاوز 200 ميجابايت (معظمها Chromium مدمج)
- صفر عمليات Electron — عملية واحدة في مدير المهام، استخدام موارد يمكن التنبؤ به
- لا حاجة لإعادة التشغيل — يعمل لأسابيع دون نمو الذاكرة
تغطي مجموعة الميزات كل ما يحتاجه معظم مستخدمي Monosnap: التقاط المنطقة، التقاط الشاشة الكاملة، 11 أداة تعليق توضيحي (بما في ذلك التمويه للبيانات الحساسة)، والتحميل عبر SFTP أو FTP أو S3 أو HTTP. انظر المقارنة الكاملة.
الترحيل من Monosnap إلى Maxisnap
يستغرق الانتقال حوالي خمس دقائق:
- تنزيل Maxisnap — أقل من 70 ميجابايت، يتم التثبيت في حوالي دقيقة
- تعلم مفاتيح الاختصار —
Ctrl+Alt+5(منطقة),Ctrl+Alt+6(ملء الشاشة),Ctrl+Alt+7(التحميل التلقائي). دليل الاختصارات الكامل هنا. - تكوين التحميل (اختياري) — إذا كنت تستخدم سحابة Monosnap، قم بإعداد تحميل SFTP إلى خادمك الخاص لسير عمل مشابه من الالتقاط إلى الرابط دون الاعتماد على سحابة Monosnap.
- تعطيل بدء تشغيل Monosnap — الإعدادات > عام > إلغاء تحديد "تشغيل عند بدء التشغيل"
- تمكين بدء تشغيل Maxisnap — الإعدادات > تحديد "البدء مع Windows"
تبقى لقطات الشاشة الخاصة بك من سحابة Monosnap متاحة عبر واجهة الويب الخاصة بـ Monosnap حتى بعد إلغاء تثبيت تطبيق سطح المكتب. لقطات الشاشة الجديدة تتم عبر Maxisnap.
لماذا لن يتم إصلاح هذه المشكلة
من المعروف أن تسربات ذاكرة Electron يصعب إصلاحها بشكل خاص لأنها موزعة عبر طبقات الإطار. يتطلب التسرب في عملية العرض (renderer process) تصحيحًا مختلفًا عن التسرب في العملية الرئيسية (main process) أو طبقة Node.js. إن العثور على كل تسرب وإصلاحه في تطبيق Electron معقد هو في الأساس مشروع مستمر — وليس إصلاحًا لمرة واحدة.
سيحتاج فريق Monosnap إما إلى استثمار جهد هندسي كبير في تحليل الذاكرة ومعالجة التسربات، أو إعادة كتابة التطبيق بدون Electron. لا يبدو أن أيًا من هذين الخيارين مدرج في خارطة طريقهم، نظرًا لأن المشكلة استمرت عبر إصدارات رئيسية متعددة.
بالنسبة للمستخدمين، هذا يعني أن المشكلة لن تختفي. يمكنك إدارتها بإعادة التشغيل والحلول البديلة، أو يمكنك التخلص منها بالتبديل إلى أداة لا تحمل عبء Electron الزائد.
أفكار ختامية
يجب أن تكون أداة لقطة الشاشة غير مرئية. يجب أن تبقى في علبة النظام، وتستهلك موارد ضئيلة، وتلتقط شاشتك عند الضغط على مفتاح اختصار. لا ينبغي أن تكون السبب في تجمد جهاز الكمبيوتر الخاص بك أثناء عرض تقديمي.
إذا كان استخدام Monosnap للذاكرة يؤثر على عملك، فإن الإصلاحات المؤقتة المذكورة أعلاه ستساعد. لكن الإصلاح الدائم هو الواضح: استخدم أداة مصممة للمهمة بدون عبء متصفح ويب يعمل في الخلفية.
تنزيل Maxisnap وقارن مدير المهام الخاص بك قبل وبعد. الفرق فوري. مجاني للاستخدام الشخصي — لا توجد تكلفة للتجربة.