Replace WeakREference with SoftReference

WeakREference does not work quite well here. SoftRefence proved to be more stable.
Dont throw unchecked exceptions.

SoftReference should manage memory issues here.