Я действительно люблю WeakReference. Но я хотел бы, чтобы был способ сообщить CLR, сколько (скажем, по шкале от 1 до 5), насколько слаб вы считаете ссылкой. Это было бы блестяще.
Java имеет SoftReference, WeakReference, и я также считаю, что третий тип называется ссылкой phantom. Это 3 уровня прямо там, где GC имеет другой алгоритм поведения при принятии решения о том, получает ли этот объект прерывание.
Я подумываю о подклассе .NET WeakReference (к счастью и чуть-чуть-чуть не запечатанном), чтобы создать псевдо-SoftReference, основанный на таймере истечения срока действия или что-то в этом роде.