| 
                         | 
                    
                              1 
                        
                        
                                  9
                             
                            
   不,你不需要打电话
    
   它是
   
    非常
   
   很少适合为了垃圾收集而将引用设置为null,这样做会损害代码的可读性。当然,也有例外,例如,
    
   很少有必要将局部变量设置为空。你的代码
     | 
                
| 
                         | 
                    
                              2 
                        
                        
                                  8
                             
                            你没有 需要 设置 任何东西 为了让它成为GC'd而设为空。不要妄想。 不要试图像C++那样编程Java。  | 
                
| 
                         | 
                    
                              3 
                        
                        
                                  7
                             
                            很少真正需要“帮助”gc完成引用空操作。 以下是一个人工情况,在这种情况下,空值确实有帮助: 
  如果使用-Xmx100M运行此命令,它将失败,并显示OutOfMemoryError。如果取消注释使arr为空的行,它将正常工作。发生这种情况是因为arr引用在创建另一个数组时仍然保留着这个巨大的数组。内存分配发生在分配之前,它触发垃圾回收,并且失败。当取消引用时,GC会成功地生成足够的空间。  | 
                
                         
                     | 
                    
                              4 
                        
                        
                                  2
                             
                            
   不,你不需要打电话
    实际上,GC可以处理非常复杂的对象图,包括循环引用: 
  
   (我通常不会
    
   你不需要清理
    细节 (很多细节) 在里面 the JLS .  | 
                
| 
                         | 
                    
                              5 
                        
                        
                                  1
                             
                            是的,你太偏执了。只要一个对象不能通过运行代码来达到,它最终将被收集(虽然“最终”)可能意味着“当程序退出时,如果有足够的内存和GC不需要运行”。不可访问对象中的引用也不可访问,因此就GC而言,它们不再计数。 
   不过,请注意,这意味着
     | 
                
| 
                         | 
                    
                              6 
                        
                        
                                  0
                             
                            GC最终将正确地处理对象。我觉得你可能有点偏执。尽管将对象设置为空不会造成伤害。 如果您调用了myObject.clear来回答您的问题,它只会使myObject=null,那么没有理由再次将其重置为null。  | 
                
| 
                         | 
                    
                              7 
                        
                        
                                  0
                             
                            您甚至不需要将myclass设置为空。一旦超出范围,就有资格进行垃圾收集。  | 
                
| 
                         | 
                    
                              8 
                        
                        
                                  0
                             
                            
   GC将处理所有与它无关的内容。所以,在
     | 
                
| 
                         | 
                    
                              9 
                        
                        
                                  0
                             
                            
 
   你不必打电话给clear,也不必设置
    
   您也不能确定它是否会被收集,但是如果VM需要内存,那么当
    所以在这种情况下你不必担心。  | 
                
                         
                     | 
                    codeforester · 测量GC暂停时间的最佳方法是什么? 7 年前 | 
| 
                         | 
                    Venki WAR · 需要解释G1的并行完整GC 7 年前 | 
| 
                         | 
                    Stephan_Berlin · 为什么CMS系列中的初始标记阶段 7 年前 | 
| 
                         | 
                    Bonsaisteak · 为什么年轻一代需要三个区域来收集垃圾? 7 年前 | 
| 
                         | 
                    goks · 如何清除熊猫的数据帧内存? 7 年前 |