You make an interesting point. Has any language introduced a generic-resource-collector? You're not supposed to use deconstructors to clean up resources because you're left to the whims of the GC which is only concerned about memory.
Has anyone build a collector that tracks multiple types of resources an object might consume? It seems possible.