Java的垃圾回收机制保证了程序安全,它自动地进行垃圾回收避免了人为过多地或过少的错误回收问题。  这是Java的一大优势,虽然这种垃圾回收有的时候不够“智能”甚至会让人不能忍受,但毕竟按照Java的规范能够实现安全高效的垃圾管理。

解决方案 »

  1.   

    把对象置为null,也不一定就会回收
    是否回收完全基于jvm的回收策略
    这样让程序员不用自己来考虑内存利用的效率
    而是完全由jvm来管理,某种程度的方便性
      

  2.   

    其最关键和最根本的区别在于,java中的垃圾回收是自动的,而在C++中的“垃圾回收”是手动的。C++的析构函数在Java中只有一个类似的东西,没有完全的对等体。至于在java中置NUll与否,就据情况而定了。如果你有一个生存期很长的变量指向了一个以后肯定不用的大对象,当然可以把它置NUll,从而示意jvm在它适当的时机来回收这个大对象。若非此特例,通常你是无需置NULL的!!!
      

  3.   

    java的自动垃圾回收机制是java相比C++的一大优势在通常的状况下,编程人员无须对垃圾回收操心
      

  4.   

    我认为在c++中,手动“垃圾回收”也比较方便,只需要写一个简单的析构函数。并且回收的比较及时。jvm回收垃圾并不及时。为何会成为一大优势。
      

  5.   

    其实很简单,java的回收原则是没有任何引用指向这个对象。如果你在一个方法体当中new了一个对象,没有外部的引用指向它,那么当变量的生命周期结束了就可能会被回收,不置为null也没问题。c++必须delete,其实这样很危险,比如两个指针同时指向了一块内存,一个指针被delete了,另外一个却不知道,仍然调用,那么就肯定非法操作,软件崩溃的bug就出来了……