ข้ามไปยังเนื้อหาหลัก
วิธีแก้ไข หน่วยความจำรั่ว

หยุดปัญหาหน่วยความจำรั่วของ Monosnap — เปลี่ยนได้ใน 60 วินาที

ปัญหานี้ได้รับการบันทึกมานานหลายปีแล้ว และจะไม่มีการแก้ไข Maxisnap ใช้หน่วยความจำประมาณ ~50 MB เมื่อไม่ได้ใช้งานและคงที่ตลอดทั้งวัน ใช้ คีย์ลัด Ctrl+Alt+5 เดิม ไม่ต้องเรียนรู้ใหม่

วันทำงาน 8 ชั่วโมง, RAM ในหน่วย MB
Monosnap, ชั่วโมงที่ 0180
Monosnap, ชั่วโมงที่ 2295
Monosnap, ชั่วโมงที่ 4452
Monosnap, ชั่วโมงที่ 8812
Maxisnap, ทุกชั่วโมง51

ปัญหาหน่วยความจำรั่วไม่ได้เกิดจากคอมพิวเตอร์ของคุณ

หากคุณสงสัยว่าปัญหาเกิดจากเครื่องของคุณหรือไม่ — ไดรเวอร์เก่า, ความผิดปกติของ Windows 11, แท็บ Chrome ที่ทำงานผิดปกติ — มันไม่ใช่ ปัญหาหน่วยความจำรั่วอยู่ภายใน Monosnap และเป็นมานานหลายปีแล้ว ค้นหา r/monosnap แล้วคุณจะพบกระทู้แล้วกระทู้เล่าที่อธิบายรูปแบบเดียวกัน

นี่คือสิ่งที่เกิดขึ้นเบื้องหลัง ทุกครั้งที่ Monosnap จับภาพพื้นที่ มันจะจัดสรรเฟรมบัฟเฟอร์ที่มีขนาดใหญ่พอที่จะเก็บข้อมูลพิกเซลดิบได้ สำหรับหน้าจอขนาด 2560 x 1440 นั่นคือประมาณ 14 MB เมื่อโปรแกรมแก้ไขปิดลง บัฟเฟอร์เหล่านั้นควรถูกปล่อยคืนสู่ระบบปฏิบัติการ แต่ใน Monosnap บ่อยครั้งที่มันไม่ถูกปล่อย — มันถูกเก็บไว้โดยฮีปของ Electron renderer รอการทำงานของ garbage-collection ที่ไม่เคยทำงานหรือทำงานช้าเกินไป ในวันทำงานที่มีการจับภาพมากกว่า 40 ครั้ง บัฟเฟอร์ที่ถูกเก็บไว้จะสะสมเป็นหน่วยความจำ RAM ปริมาณหลายร้อยเมกะไบต์ที่มองไม่เห็น

ทางแก้คือแอปพลิเคชันอื่น

สถาปัตยกรรมของ Monosnap ผูกปัญหาหน่วยความจำรั่วเข้ากับ Electron เอง และการแก้ไขจะต้องเขียนโค้ดส่วนการจับภาพใหม่ทั้งหมด การเขียนใหม่นั้นยังไม่เกิดขึ้นมาห้าปีแล้ว ทางแก้ที่เป็นไปได้คือเครื่องมือที่ถูกออกแบบมาโดยไม่มีปัญหานี้ตั้งแต่แรก

Maxisnap สร้างขึ้นบน PyQt6 และคอมไพล์ด้วย PyInstaller ให้เป็นไฟล์ปฏิบัติการ Win32 ไฟล์เดียว ไม่มีกระบวนการ Chromium การจับภาพแต่ละครั้งจะจัดสรร QImage, โปรแกรมแก้ไขจะอ้างอิงถึงมัน และเมื่อหน้าต่างปิดลง การอ้างอิงจะถูกยกเลิกและหน่วยความจำจะกลับคืนสู่ระบบปฏิบัติการทันที — เนื่องจากโมเดลการเป็นเจ้าของของ PyQt และการนับการอ้างอิงของ Python ทั้งคู่จะปล่อยหน่วยความจำทันทีโดยไม่ต้องรอ generational GC

จากการทดลอง: Maxisnap เมื่อไม่ได้ใช้งานตอนเริ่มต้นจะอยู่ที่ประมาณ 50 MB หลังจากทำงานต่อเนื่อง 72 ชั่วโมงพร้อมกับการจับภาพเป็นประจำ ก็ยังคงอยู่ที่ประมาณ 50 MB แผนภูมิด้านบนมาจากบันทึกจริง

ภายใน 60 วินาที

ขั้นตอนการเปลี่ยน

  1. 0:00
    ดาวน์โหลด Maxisnap ไปที่ หน้าดาวน์โหลด. คลิกเดียว, 63 MB.
  2. 0:15
    ออกจาก Monosnap คลิกขวาที่ไอคอนในถาดระบบ เลือก 'ออก' แล้วดู RAM ของคุณลดลง 600 MB
  3. 0:30
    เรียกใช้โปรแกรมติดตั้ง เส้นทางการติดตั้งเริ่มต้น ไม่ต้องรีบูตเครื่อง
  4. 0:45
    กด Ctrl+Alt+5 การจับภาพครั้งแรกของคุณด้วยคีย์ลัดเดียวกันกับที่คุณเคยใช้ โปรแกรมแก้ไขจะเปิดขึ้นทันที
  5. 0:60
    เสร็จสิ้น วางข้อมูลรับรอง SFTP/S3 ของคุณในการตั้งค่า หากคุณต้องการอัปโหลดไปยังเซิร์ฟเวอร์
FAQ

คำถามเกี่ยวกับปัญหาหน่วยความจำรั่ว

ฉันจับภาพหน้าจอเพียงวันละ 5 ครั้ง ปัญหานี้ยังคงส่งผลกระทบต่อฉันหรือไม่?

น้อยลง แต่ก็ยังคงส่งผลกระทบ หน่วยความจำที่ไม่ได้ใช้งานยังคงเพิ่มขึ้นเนื่องจาก Monosnap ตรวจสอบคลิปบอร์ดและถาดระบบแม้ในขณะที่คุณไม่ได้จับภาพ การเพิ่มขึ้นจะช้าลงเมื่อใช้งานน้อย แต่ก็ไม่เคยหยุด

การรีสตาร์ทแอปช่วยได้หรือไม่?

ชั่วคราว ออกจากแอปแล้วเปิดใหม่ คุณจะกลับมาที่ประมาณ 180 MB แต่ผู้ใช้ส่วนใหญ่ที่สังเกตเห็นปัญหานี้เป็นเพราะพวกเขาเปิดเครื่องมือจับภาพหน้าจอทิ้งไว้ตลอดทั้งวัน และการรีสตาร์ทหลายครั้งไม่ใช่สิ่งที่พวกเขาต้องการ

แล้ว Monosnap บน macOS ล่ะ?

ปัญหาหน่วยความจำรั่วรุนแรงน้อยกว่าบน macOS เนื่องจากโมเดลหน่วยความจำแตกต่างกัน แต่ผู้ใช้ยังคงรายงานการเพิ่มขึ้นอย่างค่อยเป็นค่อยไป Maxisnap เวอร์ชัน macOS ยังอยู่ในช่วงทดลอง สำหรับ Windows ให้เปลี่ยนมาใช้เลยวันนี้

RAM ของคุณจะขอบคุณคุณ

Maxisnap ฟรี ใช้เวลาติดตั้ง 60 วินาทีคีย์ลัดเดียวกันกับที่คุณเคยใช้

ดาวน์โหลด Maxisnap

ที่เกี่ยวข้อง: ทำไมถึงช้าลง · แก้ไขปัญหาค้าง · ทางเลือกทั่วไป