首页 > 软件开发 > JAVA >

java中的弱引用

来源:互联网 2023-03-16 19:22:34 74

弱引用也是用来描述非必需对象的,当JVM进行垃圾回收时,无论内存是否充足,都会回收被弱引用关联的对象。在java中,用java.lang.ref.WeakReference类来表示。gGR办公区 - 实用经验教程分享!

java中的弱引用gGR办公区 - 实用经验教程分享!

工具/原料

  • jdk1.8

方法/步骤

  • 1

    弱引用也是用来描述非必需对象的,当JVM进行垃圾回收时,无论内存是否充足,都会回收被弱引用关联的对象。gGR办公区 - 实用经验教程分享!

    java中的弱引用gGR办公区 - 实用经验教程分享!

  • 2

    弱点引用是一个泛型容器类, 当包含的实例没有强引用时, 它就有资格进行垃圾回收。gGR办公区 - 实用经验教程分享!

    java中的弱引用gGR办公区 - 实用经验教程分享!

  • 3

    下图中堆栈实现的另一种方法是保存元素的弱引用列表。然后, 在垃圾回收时, 任何没有其他引用的元素都将设置为 null。gGR办公区 - 实用经验教程分享!

    java中的弱引用gGR办公区 - 实用经验教程分享!

  • 4

    下图显示了一个可能的声明, 其中包含了一个额外的方法, 请查看。gGR办公区 - 实用经验教程分享!

    java中的弱引用gGR办公区 - 实用经验教程分享!

  • 5

    在堆栈中推送新元素时, 它将存储为 WeakReference, 当它被弹出时, 将检索 WeakReference, 并调用 get 来获取该对象。现在, 当任何客户端代码没有指向该对象的更多指针时, 它将有资格在下一次垃圾回收中删除。gGR办公区 - 实用经验教程分享!

    peek 方法只需返回堆栈上的顶部元素, 而不将其删除。gGR办公区 - 实用经验教程分享!

  • 6

    如下显示, 当删除对值的所有强引用时, 堆栈中的引用设置为 null。使用的ValueContainer类仅包含一个字符串, 但其最终完成方法已被重写, 以突出显示垃圾回收器调用的此方法。如果删除 system. gc () 行, 测试将失败。gGR办公区 - 实用经验教程分享!

    java中的弱引用gGR办公区 - 实用经验教程分享!

    java中的弱引用gGR办公区 - 实用经验教程分享!

  • 7

    此测试演示了一些相当复杂的概念。需要注意的是, 预期的引用和传递给堆栈的引用是不同的。如果对堆栈的推送看起来像堆栈. push (预期), 则在此测试期间, 会始终保留一个强引用, 这意味着它不会被垃圾回收, 从而导致测试失败。gGR办公区 - 实用经验教程分享!

    java中的弱引用gGR办公区 - 实用经验教程分享!

  • 8

    测试使用 peek 方法检查堆栈, 确认该值按预期方式位于堆栈上。然后将对等值引用设置为 null。除了堆栈中的 "弱引用" 内之外, 没有对此值的引用, 因此在下一次垃圾回收时, 应回收内存。gGR办公区 - 实用经验教程分享!

  • 8该信息未经授权抓取自百度经验
  • 以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!gGR办公区 - 实用经验教程分享!


    标签: JAVA内存

    办公区 Copyright © 2016-2023 www.bgqu.net. Some Rights Reserved. 备案号:湘ICP备2020019561号统计代码