我有一个缓存,它具有对缓存对象的软引用.我正在尝试为类的行为编写功能测试,这些类使用缓存专门用于清除缓存对象时发生的情况.
问题是:我似乎无法可靠地获得要清除的软引用.简单地使用一堆内存并不能解决问题:在清除任何软引用之前,我得到一个OutOfMemory.
有没有办法让Java更加急切地清理软引用?
在这里找到:
"虽然在抛出OutOfMemoryError之前所有的SoftReferences都会被清除,但是理论上它们不会导致OOME."
那么这是否意味着上面的场景必须意味着我的内存泄漏,某些类在我的缓存对象上持有一个硬引用?
我知道弱引用受到垃圾收集器的支配,我们不能保证弱引用会存在.我看不出需要弱参考,但确定应该有理由.