Java Finalize method

เออ เรียนจาวาผ่านมาได้ไงก็ไม่รู้แฮะ ไม่รู้จัก Method นี้ แย่จิง ที่จริงแล้วก็ไม่ได้เป็นอะไรที่แปลกใหม่เลย ถ้าใครผ่าน C มามันก็คือ free() นั่นเอง แต่ถ้าใครเขียน C++ ก็คงเจอ delete มาFinalize() คือ method ที่ใช้สำหรับคืน memory ให้กับระบบ แต่วิธีการคืนนั้นอาจจะต่างจาก C/C++ หน่อยเพราะ Java มี Garbage collector ที่จะทำงานในส่วนนี้ แต่ C/C++ คน เขียนโปรแกรมต้องเป็นคนสั่งเอง แต่เมื่อไหร่ที่มันจะทำงานหละ เนื่องจากมันคาดเดาไม่ได้ว่ามันจะถูกเรียกเมื่อไหร่ ทำให้คนเขียนโปรแกรมต่างๆ ต้องคอยระวังเพื่อไม่ให้ผลลัพธ์ที่เกิดขึ้นผิดพลาดคำถาม: เมื่อไหร่ Finalize จะทำงานอย่างแรกเลยมาดูการทำงานของ JVM กันก่อน JVM มีหน้าที่ในการรันคำสั่งต่างๆของโปรแกรมจาวา ซึ่งก็ได้แก้ โหลดคลาส นำคลาสออก สร้างวัตถุ หรือแม้แต่ทำลายวัตถุทิ้ง ซึ่ง JVM จะตรวจสอบว่าวัตถุใดควรจะเรียก finalize ได้แล้วนั้น ซึ้งสถานะต่างๆ ประกอบด้วย สถานะการเข้าถึง (cross product reachability) และสถานะว่าถูก finalize ไปหรือยังสำหรับรายละเอียดแบบเจาะลึกไปดูในเอกสารเพิ่มเติมละกัน มันเยอะง่ะเอกสาร

เพิ่มเติม: http://cs.anu.edu.au/~Steve.Blackburn/pubs/papers/finalize-pjw3.pdf

About llun

Just a programmer