Gerçekten zayıf referanslar, hayır, henüz değil (ancak tarayıcı üreticileri konuya bakıyor). Ama burada zayıf referansların nasıl simüle edileceğine dair bir fikir var.
Nesnelerinizi içinden geçirdiğiniz bir önbellek oluşturabilirsiniz. Bir nesne depolandığında, önbellek, nesnenin ne kadar bellek kullanacağına dair bir tahmin tutar. Görüntüleri saklama gibi bazı öğeler için bu, çalışmak için basittir. Diğerleri için bu daha zor olacaktır.
Bir nesneye ihtiyacınız olduğunda, önbellekten onu istersiniz. Önbellekte nesne varsa, döndürülür. Orada yoksa, öğe oluşturulur, depolanır ve ardından iade edilir.
Zayıf referanslar, tahmin edilen toplam bellek miktarı belirli bir seviyeye ulaştığında, önbellek kaldırma öğeleri tarafından simüle edilir. Hangi öğelerin en az kullanıldığını, ne sıklıkta alındıklarına ve ne kadar zaman önce çıkarıldıklarına göre ağırlıklandırılarak tahmin edecektir. Öğeyi oluşturan kod önbelleğe kapanış olarak aktarılırsa bir 'hesaplama' maliyeti de eklenebilir. Bu, önbelleğin oluşturulması veya üretilmesi çok pahalı olan öğeleri tutmasına izin verir.
Silme algoritması anahtardır, çünkü bunu yanlış yaparsanız, o zaman en popüler öğeleri kaldırabilirsiniz. Bu korkunç performansa neden olur.
Önbellek, depolanan nesnelere kalıcı referansları olan tek nesne olduğu sürece , yukarıdaki sistem gerçek zayıf referanslara bir alternatif olarak oldukça iyi çalışmalıdır.