这是下午的一个面试题,垃圾回收,一个全局变量在 局部方法中置为Null,当该方法return 时局部方法中 的局部变量 和该 全局变量 哪个先被回收?为什么?我说不一定,因为全局变量 置为 null  时,只是程序员通知 系统 该内存可以回收,不是必然要回收。
而当该方法 退出方法体是  局部变量 就被回收了。ps:大家说说吧,我觉得这一题的回答,面试官似乎不满意,以前真没考虑过

解决方案 »

  1.   

    个人感觉应该先回收局部变量再回收全局变量。我的理解是不管全局变量是不是null,都应该在被实例化的实体类释放时跟着释放。如果因为值为null就回收,那么如果我写的变量为a=null,这样定义岂不是还没用就直接给回收了?
      

  2.   

    应该是java的垃圾回收期调用时自动回收吧,手动的置为空,能使回收器回收得更快。
      

  3.   


    我和二楼一样的理解 不知道对不  当你设置为null 只是显示的告诉系统 此变量暂时不会被使用了 JVM的垃圾回收机制 会在一段时间内对其判断 然后进行回收..   
     不知道我说的对不  不对的请大家指出来 
      

  4.   

    根本无法确定会不会回收更无法确定谁先被回收这完全依赖垃圾收集算法如果你说a先回收b后回收,那一定可以实现一个jvm,让它先回收b后回收a,甚至实现一个jvm,压根就不实现垃圾回收部分,只是在内存不足的时候抛出outofmemonyerror