1. 首页
  2. 编程语言
  3. Java
  4. Java对象不使用时赋值null的意义详解

Java对象不使用时赋值null的意义详解

上传者: 2022-04-16 21:29:30上传 PDF文件 122.11 KB 热度 7次

先看代码idea配置gc日志打印运行上面的代码,载图gc日志现在我们修改上面的测试代码,将placeHolder置为null再次运行程序,查看gc日志由以上载图日志可以明显看到二者差别,所以不用对象置为null还是很有意义的。这还得从jvm认定垃圾的机制:可达性分析说起。先看第一段代码,就是placeHolder没有置null的“本地变量表 ”使用javap -v TestDemo1.class可以看到placeHolder还在本地变量表中,而且它占用slot槽1号位置, 所以jvm认为它还是活着的。然后,我们再看placeHolder =null这段代码的"本地变量表"的情况,其实它与上面一样,看不出啥差别。那么应该可以说明,我们声明的这个String name = "admin" 断开了栈中placeHolder与堆中实例之间关系。而placeHolder =null应该也有这个功能。

下载地址
用户评论