หัวข้อข่าว

เครื่องช้าจัง… ไม่ใช่เพราะเก่า แต่เพราะ “โค้ด” แอบกินแรม!

Microsoft

Matt Hamrick วิศวกรอาวุโสของ Microsoft ออกมาเล่าปัญหาน่าปวดหัวที่ใครใช้ Windows อาจเคยเจอ — อยู่ดี ๆ เครื่องช้าลงเรื่อย ๆ แบบไม่รู้สาเหตุ ทั้งที่ไม่ได้ลงโปรแกรมอะไรใหม่เลย แต่รู้หรือไม่ว่า ต้นตออาจมาจาก โค้ด .NET ที่เขียนมาแบบผิดวิธี

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

Matt Hamrick วิศวกรอาวุโสของ Microsoft

Matt Hamrick วิศวกรระดับอาวุโสของ Microsoft ได้เปิดเผย

ผ่านบล็อกส่วนตัวเกี่ยวกับปัญหาน่าสนใจที่เขาค้นพบจากการวิเคราะห์ memory dump ด้วยเครื่องมือระดับลึกอย่าง WinDbg ปัญหานี้เกี่ยวข้องกับการตั้งค่าหนึ่งใน .NET ที่ชื่อว่า reloadOnChange: true ซึ่งปกติแล้วใช้สำหรับสั่งให้แอปพลิเคชันรีโหลดค่าจากไฟล์คอนฟิกโดยอัตโนมัติเมื่อมีการเปลี่ยนแปลง

แต่เมื่อถูกใช้งานผิดที่ เช่น ถูกวางไว้ใน Controller หรือ Middleware ซึ่งเป็นโค้ดที่ทำงานซ้ำ ๆ ตลอดเวลา อาจทำให้เกิดปัญหา memory leak อย่างรุนแรง ส่งผลให้แรมถูกใช้งานสะสมโดยไม่คืนหน่วยความจำคืนให้ระบบ ทำให้แอปแครช หรือแม้แต่ทำให้ระบบ Windows ทั้งหมดช้าลงจนผู้ใช้รู้สึกได้

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

Matt ย้ำว่านักพัฒนา .NET ต้องใส่ใจ

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

บทความนี้ยังสอดคล้องกับอีกแนวคิดที่กำลังได้รับความนิยมในวงการไอทีคือ “Sloppy software is why you think you need new hardware” หรือในแง่หนึ่งคือ ซอฟต์แวร์ที่ไม่ได้คุณภาพ คือสาเหตุที่ผู้ใช้คิดว่าเครื่องเก่าและจำเป็นต้องเปลี่ยนใหม่ ทั้งที่ความจริงอาจไม่ได้เป็นเช่นนั้น

22

คำแนะนำสำหรับผู้ใช้และนักพัฒนา

  • หากคุณใช้แอปพลิเคชันจากนักพัฒนาภายนอก หรือแอปที่ไม่ได้เป็นทางการ แล้วรู้สึกว่าเครื่องช้าผิดปกติ ควรตรวจสอบว่าแอปนั้นใช้ทรัพยากรระบบมากผิดปกติหรือไม่
  • นักพัฒนาควรหลีกเลี่ยงการใช้ reloadOnChange: true ในส่วนของโค้ดที่ทำงานถี่หรือวนลูปบ่อย
  • การตรวจสอบ memory leak ด้วยเครื่องมืออย่าง WinDbg หรือ .NET diagnostics tools เป็นแนวทางที่ควรทำเป็นระยะ

สิ่งที่ผู้ใช้ควรจับตาอีกเรื่องคือ Microsoft ได้ประกาศแล้วว่า Windows 10 จะหยุดการซัพพอร์ตในเร็ว ๆ นี้ สำหรับผู้ที่ไม่สามารถอัปเกรดเป็น Windows 11 ได้ อาจต้องพิจารณาทางเลือกใหม่ ไม่ว่าจะเป็นการซื้ออุปกรณ์ใหม่ หรือเลือกใช้ระบบปฏิบัติการรุ่นเก่าที่เบากว่าอย่าง Windows 8.1 แม้จะต้องยอมรับความเสี่ยงจากการไม่มีแพตช์ความปลอดภัย

tags : neowin.net

Facebook

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *