Special method in object-oriented programming which is called deterministically to perform cleanup just before the object is deallocated