วิธีตรวจหารั่วหน่วยความจำใน Ubuntu

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

หากคุณกังวลเกี่ยวกับหน่วยความจำรั่วให้ลองพิมพ์ซ้ำอีกครั้งในเทอร์มินัล ถ้าคุณเริ่มมองเห็นการใช้ RAM อย่างรวดเร็วจากนั้นคุณได้ตรวจพบการรั่วไหลของหน่วยความจำแล้ว หากคุณได้รับข้อผิดพลาดที่อ่านบางอย่างเช่น bash: หน่วยความจำไม่เพียงพอขณะทำเช่นนี้และคุณไม่มีอะไรนอกจาก terminal หรือแม้แต่คอนโซลเสมือนที่เปิดอยู่ การรั่วไหลของหน่วยความจำบางอย่างอาจเป็นส่วนย่อยเล็กน้อย แต่อูบุนตูและอุปกรณ์ปั่นต่างๆมีเครื่องมือและแพคเกจที่สามารถช่วยคุณตรวจจับได้

ตรวจหารั่วไหลของหน่วยความจำใน Ubuntu

เนื่องจากเครื่องมือที่ใช้ในการตรวจจับการรั่วไหลของหน่วยความจำจึงขึ้นอยู่กับข้อความแจ้งเตือน CLI ไม่ว่าคุณจะใช้ Ubuntu รุ่นใดก็ตาม เหล่านี้ควรทำงานได้ดีภายในเทอร์มินัล Unity ใน Ubuntu ปกติจากคอนโซลเสมือนใน Ubuntu Server จาก lxterm ใน Lubuntu, Konsole ใน Kubuntu หรือภายใน Xfce ใน Xubuntu ลองใช้งานง่ายๆเช่น sudo -s และพิมพ์รหัสผ่านเพื่อเริ่มต้น

นี้ควรจะได้รับคุณเปลือกรากถ้าดำเนินการอย่างถูกต้อง แต่อาจทำให้เกิดข้อผิดพลาดของหน่วยความจำถ้าคุณกำลังทำงานกับการรั่วไหลที่ได้ไปแล้วไกล หากคุณสามารถเข้าถึง root shell ได้อย่างถูกต้องจากนั้นลองพิมพ์ echo 3> / proc / sys / m / drop_caches จากนั้นกด enter จากนั้นพิมพ์ exit ลองใช้งานฟรีหรือฟรี -m อีกครั้งเพื่อดูว่าช่วยให้สามารถปลดปล่อยหน่วยความจำได้หรือไม่

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

มีคนแนะนำให้เพิ่มการซิงค์สาย sudo echo 3> / proc / sys / vm / drop_caches ไปยังสคริปต์ที่ cron ทำงานอย่างสม่ำเสมอ แต่นี่เป็นการเอาชนะจุดประสงค์ของแคชหน่วยความจำในครั้งแรก หน่วยความจำอิสระเป็นเพียง RAM ที่ไม่ได้ใช้และนั่นหมายความว่าข้อมูลจะต้องโหลดจากระบบไฟฟ้าที่ช้ากว่ามาก

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

PRO TIP: หากปัญหาเกิดขึ้นกับคอมพิวเตอร์หรือแล็ปท็อป / โน้ตบุ๊คคุณควรลองใช้ซอฟต์แวร์ Reimage Plus ซึ่งสามารถสแกนที่เก็บข้อมูลและแทนที่ไฟล์ที่เสียหายได้ วิธีนี้ใช้ได้ผลในกรณีส่วนใหญ่เนื่องจากปัญหาเกิดจากความเสียหายของระบบ คุณสามารถดาวน์โหลด Reimage Plus โดยคลิกที่นี่

หากคุณพบแอ็พพลิเคชันที่ใช้หน่วยความจำจำนวนมากให้กด q เพื่อออกจากนั้นลองฆ่า #### ด้วยหมายเลข PID จากหน้าจอก่อนหน้า กระบวนการของระบบไม่ควรจะถูกฆ่าด้วยวิธีนี้และควรทำอะไรที่คุณไม่ได้บันทึกเอาไว้ลองคิดเช่นนี้ว่าจะฆ่าบางสิ่งด้วยรายการงาน Ctrl + Alt + Del ซึ่งคุณสามารถใช้สำหรับกระบวนการเดียวกันนี้ได้เช่นกัน

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

หากคุณไม่ได้เป็นเพียงการแก้ไขปัญหาการใช้งาน แต่ยังจริงการทำงานกับรหัสแล้วมีทรัพยากรอื่น ๆ ที่คุณมี อูบุนตูและอนุพันธ์ของมันนำเสนอชุดโปรแกรม membarrier, memusage และ memusagestat C สำหรับการเขียนโปรแกรม

เพียงใช้ man membarrier, man memusage หรือ man memusagestat เพื่อดูหน้า Manual Manual ของ Linux Program เกี่ยวกับขั้นตอนสำคัญ ๆ เหล่านี้ หากมีการอัพเกรดในไลบรารีเวอร์ชันอนาคตในรูปแบบ Ubuntu รุ่นใหม่ ๆ การเปลี่ยนแปลงจะมีการระบุไว้ที่นี่เสมอ

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

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

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

PRO TIP: หากปัญหาเกิดขึ้นกับคอมพิวเตอร์หรือแล็ปท็อป / โน้ตบุ๊คคุณควรลองใช้ซอฟต์แวร์ Reimage Plus ซึ่งสามารถสแกนที่เก็บข้อมูลและแทนที่ไฟล์ที่เสียหายได้ วิธีนี้ใช้ได้ผลในกรณีส่วนใหญ่เนื่องจากปัญหาเกิดจากความเสียหายของระบบ คุณสามารถดาวน์โหลด Reimage Plus โดยคลิกที่นี่

Facebook Twitter Google Plus Pinterest