Sería posible tener una semántica similar a la que describe si una referencia débil con un notificador se considerara de manera similar a un objeto con un finalizador, es decir, cuando el objeto ya no fuera de interés para cualquiera, se pondría en cola para su finalización y notificación; la entrada de la cola se consideraría una referencia en vivo, por lo que el objeto no se recolectaría realmente hasta que no se actuara.
Dado que eso no es posible, el mejor enfoque posible podría ser que todas las referencias de "Me interesen este objeto" apunten a un objeto contenedor ligero que a su vez apunta al objeto real, y tiene el Las referencias "débiles" apuntan a un contenedor diferente que también apunta al objeto real. El primer contenedor debería contener una referencia al segundo, pero no al revés. El primer contenedor debería tener un finalizador que desencadenará el código apropiado cuando salga del alcance.
Lamentablemente, no he visto ninguna implementación completa de dicha estrategia. Hay algunas advertencias importantes a considerar. Entre ellos: (1) los finalizadores nunca deben esperar bloqueos ni hacer nada que pueda arrojar una excepción; (2) el código que accede a otros objetos que podrían haber salido del alcance debe prepararse para la posibilidad de que ya se hayan finalizado, estén en proceso de finalización, estén en espera de finalización o aún tengan referencias en vivo en otro lugar; (3) si un finalizador almacena una referencia rooteada a un objeto finalizable que se ha encontrado elegible para la recolección de elementos no utilizados, dicho objeto puede finalizar aunque la referencia viva exista.
Supongo que es un lugar tan natural como cualquiera para actualizar los datos serializados. Gracias por la info! –