java的垃圾收集对效率的一种妥协。效率的丧失是肯定的。java的垃圾收集并不像你说的,手工处理是不可能的,最多你只能用System.gc()来建议jvm收集泄漏的资源。

解决方案 »

  1.   

    java的垃圾收集器可以说是java的一大特点。它的最基本特点是当一个对象或实例不再用的时候,就建议收集器回收内存,注意是建议不是一定回收,如果收集器见到一个对象满足回收的条件就回收该对象。而c/c++中内存由程序员自己来确定该对象是否应该回收,如果回收得对倒没什么,如果不对,就是致命的错误,可想而知道,那可是物理内存!!虽然在java中可能有一些内存不能及时回收,只是占用一些内存而已(而且现在内存也不是很贵!!呵呵)。程序首先是正确性,没有这个其它什么都没有用!
      

  2.   

    1、C++主要在栈(stack)中分配内存,而java主要在堆(heap)中分配(基本数据类型在栈中分配)。[1]
    2、同意cyberworm(虫子)的意见,“手工处理是不可能的”。不过可以“setting references to null to allow cleanup”。[2][1][2]参见《Think in Java,2nd Edtion》影印版机械工业出版社P215 P397新的concorrent garbage collector将出现在j2sdk1.4.1中。
    新的parallel garbage collector将出现在j2sk1.5中。
    具体可以浏览http://java.sun.com/docs/hotspot/index.html
      

  3.   

    这个问题在usnet上讨论过,最后由于C++智能指针的出现,java败得一塌糊涂。
      

  4.   

    Java中的垃圾收集只能用来回收由new生成的对象吗?请谈谈Java中还有那些生成对象的方法。
    C++的智能指针不是很早就出现了吗?在COM技术中就有应用(类厂的建立),请kicku好好谈谈!
      

  5.   

    [Java中的垃圾收集只能用来回收由new生成的对象吗?]
    除了用new生成对象,Java还有什么其它方式生成对象??没听说过
      

  6.   

    java当中当然有不用new生成的对象啦!比如数组的初始化,呵呵!
      

  7.   

    为什么java的参数-Xmx , -Xms 不见生效,求示例
      

  8.   

    "而C++的直接内存管理中,如果程序员在使用完某个对象之后,忘记了回收内存,在需要给新的对象分配内存的时候,C++将在已经开辟但是没有回收的heap内存区域中轮训,并在其中选一个分配给它,这样也就造成效率的降低。"这句话错了吧。