Java 中引用的层次结构是什么?
软引用与弱引用
讨论时在Java中引用时,人们经常会遇到“软引用”这个术语和“弱引用”。这两种类型的引用到底代表什么,它们有何不同?
正如 Ethan Nicholas 的文章“理解弱引用”所解释的,弱引用是指强度不足以将对象保留在内存中的引用。这意味着一旦没有强引用指向某个对象,垃圾收集器可能会将其删除。
相反,软引用就像弱引用,但它们不太急于丢弃所引用的对象。只要有足够的可用内存,软可达对象就会保留在内存中。如果内存变得稀缺,垃圾收集器可能会清理软引用以释放空间。
这些属性使软引用成为缓存的理想选择,只要内存允许,就可以存储对象以便快速访问。如果内存不足,最不重要的对象(软可达对象)将被删除。
此外,Peter Kessler 观察到 Sun JRE 对待软引用与弱引用的方式不同。客户端 JRE 优先删除软引用以保持较小的内存占用,而服务器 JRE 通过扩展堆而不是消除软引用来关注性能。
以上是Java中的软引用和弱引用有什么区别?的详细内容。更多信息请关注PHP中文网其他相关文章!