前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java 中将引用置为null能help gc吗?

java 中将引用置为null能help gc吗?

作者头像
山行AI
发布2019-06-28 16:40:31
2.2K1
发布2019-06-28 16:40:31
举报
文章被收录于专栏:山行AI

在idea 是搜索help gc 会出现如下图所示结果:

可以发现,有很多将引用置为null的操作,然后注释写的是help gc 。

那么,这个help gc操作真的有用吗?

有一种说法是,现在jvm已经足够智能,会进行自动优化,不需要这样做。

另一个说法是,具体有没有用,得看具体的代码。如果那个引用从来都没有逃逸出去,这样写就是没有什么作用的。有人说,逃逸分析是在1.6才实现,置null 操作在1.6之前可能有些用处。在即使逃逸分析已经很牛的现在,在Tree、链表这种结构中依旧要置null,因为还有一个问题是:浮动垃圾。

浮动垃圾:float garbage

参考:https://stackoverflow.com/questions/10106191/openjdks-linkedblockingqueue-implementation-node-class-and-gc

在链表、Tree这类结构中,有1个~N个字段指向后继节点。比如单向链表中的next,TreeNode中的left、right等。置null 操作是有help gc的作用的。

另外,Effective Java 3rd 的Item7:Eliminate obsolete object references 也讲了这个问题。

https://jiapengcai.gitbooks.io/effective-java/content/chapter1/di-7-tiao-ff1a-xiao-chu-guo-shi-de-dui-xiang-yin-yong.html

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-06-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开发架构二三事 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档