基本区别在于,弱引用应该在每次GC运行时被声明(保持内存占用低),而软引用应该一直保留在内存中,直到GC实际上需要内存(它们试图扩展生命周期但随时可能失败,这对于例如缓存尤其是相当昂贵的对象很有用)。
据我所知,在.NET中没有明确说明弱引用如何影响对象的生命周期。如果它们是真正的弱引用,它们根本不应该影响对象的生命周期,但那也会使它们对于缓存(我在这里错了吗?)等主要用途变得相当无用。另一方面,如果它们像软引用那样工作,它们的名称有点误导人。
就个人而言,我认为它们的行为类似于软引用,但这只是一种印象,没有依据。
当然,实现细节也适用。我正在询问与.NET的弱引用相关联的心态-它们能够扩展生命周期,还是像真正的弱引用那样工作?
(尽管我提出了许多相关问题,但我还没有找到答案来解决这个具体问题。)
据我所知,在.NET中没有明确说明弱引用如何影响对象的生命周期。如果它们是真正的弱引用,它们根本不应该影响对象的生命周期,但那也会使它们对于缓存(我在这里错了吗?)等主要用途变得相当无用。另一方面,如果它们像软引用那样工作,它们的名称有点误导人。
就个人而言,我认为它们的行为类似于软引用,但这只是一种印象,没有依据。
当然,实现细节也适用。我正在询问与.NET的弱引用相关联的心态-它们能够扩展生命周期,还是像真正的弱引用那样工作?
(尽管我提出了许多相关问题,但我还没有找到答案来解决这个具体问题。)