在程序中有很多String 类对象,在程序结束后,这些对象是否还占用内存?有没有简单的方法将这些对象一次回收。

解决方案 »

  1.   

    在java中不在存在象C++中那样让人头痛的资源回收的问题,应为在jvm中会自动对无用资源进行回收,不过虽然jvm提供了垃圾回收机制,但是我们也可以加速垃圾的回收。
    以你现在的例子为例,你在使用String对象的时候,最好在程序结束地方对不在使用的String对象赋空,即String obj = null;
    然后在程序结束的地方,调用Runtime.gc()函数来手动触发JVM进行垃圾回收,这样就能在你的程序结束的时候,进行你所需要的资源的释放。
      

  2.   

    应该不占用内存了,JAVA实行的是垃圾回收机制,所以JAVA只有构造函数,没有析构函数.在程序结束的时候gz会把没有句柄的对象释放掉.
      

  3.   

    不会,只要找不到String的引用就行会被回收,
    String是这样构造的,对于不是new String来构造的String是先到String池查找是否有这个String(String的常量池是由jdk自己维护的,这个池中最开始只是生成Class的Static的String),没有则建立一个新的String,返回来如果对于字符串操作很多,如对String后面append, delete中的一部分操作很多的话,最好是用StringBuffer,因为垃圾回收机制不是万能的
      

  4.   

    怎么说得那么复杂,java里,对于一块空间,如果没有任何一个reference varible指向他,gc发动的时候就会帮你回收了