在程序中如何避免java内存泄漏?具体一点。最好有个例子,谢谢

解决方案 »

  1.   

    java会内存泄漏?第一次听说,垃圾收集不是java自己做的么?看下面的怎么说吧,我觉得泄漏可能不大
      

  2.   

    会的  我以前写代码 就出现过  hibernate 的 session对象忘记关闭了  机器都死了
      

  3.   

    java调用C++就可能内存泄露,当然不是java泄露的
    对于资源,java的垃圾收集就管不了了啊,这是程序员的问题,语言本身不能解决所有问题。
      

  4.   

    我的心得之一是:声明变量的时候赋予初值,null,0 之类的,这样不使用的时候垃圾回收器会及时知道哪些资源不可用。
    比较典型的是在使用jdbc的时候,声明Connection , Statement为null。
      

  5.   

    jni可能会出现内存泄露,建议看一下jin方面的知识
      

  6.   

    Java也存在内存泄露,但它的表现与C++不同。Java是使用有向图来进行内存管理的,只要对象是可达的,GC就不会回收它所占的内存;而如果它又是无用的,则就造成了内存泄漏。在java中内存泄漏虽然很少,但是久而久之,特别是随着越来越多的服务器程序采用Java技术,例如JSP,Servlet, EJB等,会早成服务器的崩溃。
      

  7.   

    像一下I/O数据库连接什么的
    凡是具有显示的close或者dispose的类
    用完都要显示的关闭来防止内存泄漏当然对于数据库操作,查询数据之类的量太大了,也会泄漏
    还有其它的一些情况
      

  8.   

    hibernate 的 session对象不关闭的确是挺危险的,以前做项目就是因为未关闭结果tomcat几分钟后就死了
      

  9.   

    是啊,java有gc自动回收机制,不用担心的,至于你要研究这方面的话,我建议你看看C,然后比较一下...
      

  10.   

    JAVA泄漏是肯定存在的  但没C++那么严重。
    网上有相关资料可查。
    JVM 的GC不知道它何年何月才执行。
    但JAVA又不赞同我们手动调用finalize()和system.gc();
      

  11.   

    java是有可能内存泄漏的,垃圾收集器也不是万能的;
    比如程序中创建了一系列大对象,等处理完之后,这些大对象已经不用了,但还有一些无用的引用在指向它们,
    垃圾收集器就会以为它们还在使用中,就无法回收,因此这块内存就一直在占用着,其实已经对程序没作用了。
    如果这样的内存块越积越多,就会造成内存不够用,然后就会内存溢出;
    Tomcat、jboss服务器出现的 OutOfMemory 就是这个原因。
      

  12.   

    java 是可能存在内存问题的,只不过它比C++好处理比如,打开的文件、Socket、数据库不关闭,或者经验问题没有关闭:try{
        FileInputStream fis = new FileInputStream("C:\\test.txt");
        ......
        fis.close();
    }catch(Exception ex){
        ......
    }这种代码存在隐患:当调用 fis.close() 之前出现异常,则 fis.close() 将不会被调用当然,严格来讲,这不能叫“内存泄漏”
    下面的代码则有可能产生内存泄漏:public class Global{
        private java.util.ArrayList<Object> list = new java.util.ArrayList<Object>();
        public void put(Object obj){
            list.add(obj);
        }
    }上面的代码只把对象放到集合里,却并没有把对象从集合中清除。这样,放进集合中的对象永远不会被当作垃圾回收