Echte schwache Referenzen, nein, noch nicht (aber Browserhersteller schauen sich das Thema an). Aber hier ist eine Idee, wie man schwache Referenzen simuliert.
Sie könnten einen Cache erstellen, durch den Sie Ihre Objekte fahren. Wenn ein Objekt gespeichert wird, sagt der Cache voraus, wie viel Speicher das Objekt belegen wird. Für einige Elemente, wie das Speichern von Bildern, ist dies einfach zu erarbeiten. Für andere wäre dies schwieriger.
Wenn Sie ein Objekt benötigen, fragen Sie den Cache danach. Wenn der Cache das Objekt enthält, wird es zurückgegeben. Wenn es nicht vorhanden ist, wird der Artikel generiert, gespeichert und dann zurückgegeben.
Die schwachen Referenzen werden durch das Entfernen von Elementen im Cache simuliert, wenn die Gesamtmenge des vorhergesagten Speichers ein bestimmtes Niveau erreicht. Es wird vorhergesagt, welche Elemente am wenigsten verwendet werden, basierend darauf, wie oft sie abgerufen werden, gewichtet nach der Zeit, vor der sie herausgenommen wurden. Es können auch Berechnungskosten hinzugefügt werden, wenn der Code, der das Element erstellt, als Abschluss in den Cache übergeben wird. Dies würde es dem Cache ermöglichen, Elemente zu behalten, deren Erstellung oder Generierung sehr teuer ist.
Der Löschalgorithmus ist der Schlüssel, denn wenn Sie dies falsch verstehen, können Sie am Ende die beliebtesten Elemente entfernen. Dies würde eine schreckliche Leistung verursachen.
Solange der Cache das einzige Objekt mit permanenten Verweisen auf die gespeicherten Objekte ist, sollte das obige System als Alternative zu echten schwachen Verweisen ziemlich gut funktionieren.