Ahoj, navazuji tak trochu na predchozi thread. Jsem ted zmaten, jesli ma Object.finalize() smysl nebo by mel byt @Deprecated. Pokud ma smysl, tak kdy ho pouzit?
V JDK 1.6 JavaDoc dokumentaci http://java.sun.com/javase/6/docs/api/java/lang/Object.html#finalize%28%29 stoji: "For example, the finalize method for an object that represents an input/output connection might perform explicit I/O transactions to break the connection before the object is permanently discarded." Clanek ja Javaworld http://www.javaworld.com/javaworld/jw-06-1998/jw-06-techniques.html tez radi ve finalize() uvolnovat systemove zdroje, ale pouze jako "fallback mechanism". (Coz mi presne sedi pro ten java.awt.Window problem). Progrepoval jsem JDK 1.6 zdrojaky a SUN se k finalize() asi stavi ambivalentne: nekde ho pouziva, nekde ne. Priklady pouziti: java.util.zip.ZipFile - zavira IO stream java.io.FileInputStream + java.io.FileOutputStream : zaviraji file descriptory ... a dalsi Nejvice je onen ambivalentni pristup videt na ImageInputStreamImpl a FileImageOutputStream z baliku javax.imageio.stream: ImageInputStreamImpl ma finalize(), ktere v podstate jen nastavi priznak isClosed = true FileImageOutputStream je potomek ImageInputStreamImpl a prepisuje finalize(), ve kterem nedela nic. Dale jsem nasel treba zakomentovany finalize(), ktery puvodne zavitral IO stream, v com.sun.org.apache.xerces.internal.dom.CoreDocumentImpl s poznamkou, ze "It affects the performance greatly in multi-thread environment. ". Tedy ZipFile vesele IO stream zavira ve finalize(), kdezto CoreDocumentImpl to ma zakomentovane. Diky Ondra Medek
