SoftReference太早了

fhu*_*cho 1 android

我的Android应用程序中有一个位图缓存,其位图通过SoftReference引用.然而,位图过早被淘汰.缓存中最多可以有20个位图,如果我加载更多,GC开始使SoftReferences为空.没有SoftReferences,我可以在缓存中有大约110位图.在OutOfMemoryError发生之前,SoftReference不应该为null吗?

blu*_*ubb 5

不,这种含义相反:

在抛出OutOfMemoryError之前,保证Java运行时将使SoftReferences(如果有)无效.但是,它不保证SoftReference仅在此条件下才会被取消.