Citace od: podlesh kdy 22. 07. 2014, 18:07:10
Citace od: Sten kdy 22. 07. 2014, 12:56:22
Jinak já pro implementaci RAII (hlavně pro zdroje z nativního kódu) používám takový malý hack: ve finalize javovského objektu pošlu pomocí JNI do fronty funktor, který umí zdroj uklidit.
Hmm, zajímavé, ale... proč? Obdobný mechanismus nahrazující finalize přeci byl přidán již v JDK 1.2 (PhantomReference a ReferenceQueue).
Druhá věc je označení RAII, ale na to tady určitě naběhne zásahová jednotka, takže to raději nechám stranou :-)
Rozdíl je v tom, že
ReferenceQueue je pasivní a je nutné ji pollovat, zatímco to moje je aktivní a uvolňuje zdroje ve chvíli, kdy GC uklidí ten ukazatel. Ten rozdíl se může zdát nepatrný, ale na telefonech to u dlouhoběžící aplikace dělá docela velký rozdíl ve spotřebě baterie.