04 มกราคม 2556

[Android Dev Tips] มาเพิ่มพื้นที่สำหรับ Heap Size ให้ Eclipse กันเถอะ


        บทความรอบนี้ขอเป็นเคล็ดลับเล็กๆน้อยๆสำหรับ Eclipse หน่อยละกัน ปกติเวลาเจ้าของบล็อกเขียนแอปฯ ถ้าเขียนเล่นๆก็ไม่มีปัญหาหรอก แต่ว่าถ้าเป็นแอปพลิเคชันที่มีระบบซับซ้อนหน่อย ก็ต้องมีการสร้างหลายๆหน้า เมื่อ Eclipse เปิดหน้า Layout เยอะๆ ก็ทำให้ Heap Size จะไม่พอ Heap Size คืออะไรอ่ะ? เชื่อว่าผู้ที่หลงเข้ามาอ่านบางคนไม่รู้จัก คราวนี้ก็เกริ่นคร่าวๆละกัน (ปกติเจ้าของบล็อกชอบบอกให้หาอ่านเอง)

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

        ** ถ้าไม่ถูกต้องรบกวนท้วงติงให้ด้วยนะครับ

        ถ้าใครใช้ Eclipse เวอร์ชันใหม่ๆ หรือว่าใช้ Eclipse จาก ADT  ตัวโปรแกรมก็จะมีบอก Heap Size ให้ว่าใช้ไปเท่าไรบ้าง โดยจะแสดงอยู่ที่มุมซ้ายล่างของตัวโปรแกรม Eclipse



        จากรูป จะเห็นว่าถูกกำหนดให้สามารถใช้หน่วยความจำได้สูงสุด 683 MB และ Heap Size ใช้อยู่ 352 MB โดย Heap Size จองทั้งหมด 575 MB โดยขนาดของ Heap Size จะค่อยๆขยายขึ้นเรื่อยๆตามการใช้งาน

        แล้วถ้าเจ้าของบล็อกใช้งานจน Heap Size มีขนาดเกินสูงสุดล่ะ?



        ผลก็คือโปรแกรมเด้งนั่นเอง เพราะว่า Heap Size ไม่พอใช้งาน ในภาพตัวอย่าง Heap Size มีขนาด 596 MB of 683 MB จะเห็นว่า Heap Size ได้จองพื้นที่จนเต็ม 683 MB แล้ว เมื่อใช้ Heap Size เพิ่มขึ้น ทำให้ Heap Size ขยายอีกไม่ได้


        โปรแกรมจะแจ้งให้ปิดโปรแกรม โดยมีสาเหตุว่า Out of memory หรือก็คือหน่วยความจำไม่พอนั่นเอง ซึ่งเจ้าของบล็อกเจอบ่อยมากเวลาที่ทำงานกับแอปพลิเคชันที่มีขนาดใหญ่ๆ (เด้งบ่อยจนเซง)

        ถึงแม้ว่าจะกำหนดขนาดหน่วยความจำได้โดยตรงไม่ได้ใน Eclipse แต่ก็มีวิธีแก้ปัญหาอยู่ ซึ่งจะทำให้ Eclipse ใช้หน่วยความจำได้มากขึ้น โดยเพิ่มคำสั่งกำหนดหน่วยความจำสูงสุดใน Configuration File ของ Eclipse

        ให้เปิดโฟลเดอร์ที่เก็บโปรแกรม Eclipse ไว้แล้วเปิดไฟล์ eclipse.ini ขึ้ินมาด้วย Notepad หรือ Text Editor ใดๆก็ได้



        ให้สังเกตที่บรรทัดที่มีคำว่า Xms และ Xmx ซึ่งเดิมจะกำหนดไว้ที่ 40m และ 768m นั่นก็คือ Heap Size เริ่มต้นตอนเปิดโปรแกรมจะเริ่มที่ 40 MB และขยายได้เรื่อยๆจนสูงสุดที่ 768 MB



       แก้ไขเข้าไปตามความเหมาะสมของเครื่องเลย เจ้าของบล็อกกำหนดให้ Heap Size เริ่มต้นที่ 300 MB และขยายได้สูงสุดถึง 3 GB เพราะเครื่องเจ้าของบล็อกมี RAM 6 GB ก็เหลือให้โปรแกรมอื่นใช้บ้าง สำหรับผู้ที่หลงเข้ามาอ่านก็ใส่ให้เหมาะสมกับที่มีละกัน เมื่อเสร็จแล้วก็กด Save แล้วให้ลองเปิด Eclipse ขึ้นมาใหม่ดู


        จะเห็นว่ามีพื้นที่ให้ Heap Size เพิ่มขึ้นแล้ว เป็น 2731 MB (ซึ่งไม่ตรงกับที่กำหนดไว้เป๊ะๆอยู่แล้ว เพราะถูกใช้อย่างอื่นด้วย)



        เท่านี้ก็สบายขึ้นล่ะ อย่างน้อย Heap Size ก็ไม่ล้นง่ายเหมือนเก่า ทีนี้เจ้าของบล็อกก็จัดเต็มที่เลย อยากใช้เท่าไรก็ใช้ไป (เยอะซะอย่าง)



        แต่ก็อย่าลืมว่าโปรแกรม Eclipse ก็จะกินพื้นที่ RAM ตามที่ Heap Size จองไว้นะ



        อย่างที่บอกไว้ว่าควรตั้งให้หน่วยความจำใช้ได้สูงสุดให้เหมาะสมกับขนาด RAM ที่เครื่องของผู้ที่หลงเข้ามาอ่านมี สมมติถ้าเครื่องมี RAM 2 GB ก็ไม่ควรกำหนดทั้ง 2 GB นะ เพราะเดี๋ยวจะไม่พอใช้งานอย่างอื่น ควรเหลือพื้นที่ไว้ใช้งานอื่นบ้าง


        แต่ถ้า RAM เยอะ ก็อย่าหวั่นเกรงอะไร




เหล่าพันธมิตรแอนดรอยด์

Devahoy Layer Net NuuNeoI The Cheese Factory Somkiat CC Mart Routine Artit-K Arnondora Kamonway Try to be android developer Oatrice Benz Nest Studios Kotchaphan@Medium Jirawatee@Medium Travispea@Medium