我接手一个项目,里面使用了大量的vector,最近几个人测试BUG经常发现内存溢出,数据库连接池正常,有人说需要释放对象内存,如:Vector。
java有垃圾回收机制,需要自己释放对象内存吗?
vector = null?这样释放对象?

解决方案 »

  1.   

    可以自己手动清理=null并没有清理内存
      

  2.   

    手动清理怎么弄?重启weblogic?不可能一直都有人看着
      

  3.   

    我觉得如果vector里的对象是通过自己管理的,还是需要做内存清理的。把vector里不需要的元素设为null。
      

  4.   

    手动清理我觉得是把vector里不需要的对象设为null,还是有虚拟机自行清理。
    例如,程序只对index进行管理(vector里的对象需不需要),那么其实index范围外的对象并没有被虚拟机进行回收,因为他们没有变为null。
      

  5.   

    weblogic里有定时垃圾回收的设置
      

  6.   

    最近几个人测试BUG经常发现内存溢出,我觉得你们是否已经确定内存溢出的原因就是vector?
      

  7.   

    要把vector里不用的对象引用赋值为null
      

  8.   

    没必要,java虚拟机有自动清楚垃圾的机制!不过,也可手动清除
      

  9.   

    把语句块里声明的变量设置为 null 是没必要的。
    如果是容器的话,如 Vector、Map 需要的话可以清空容器的内容。
      

  10.   

    等于null就会自动清空的
    只是不是马上清
    或者你手动运行一下垃圾回收
    不过一般溢出是代码的问题
    回收内存不是解决问题的根本办法
      

  11.   

    JVM会自动回收的,和weblogic没关系-------------------------------------------------
    爱问易 - 非官方技术支持互助平台
    http://www.iaskengineer.com
      

  12.   

    如果确定连接池正常,内存溢出要先看GC输出-------------------------------------------------
    爱问易 - 非官方技术支持互助平台
    http://www.iaskengineer.com
      

  13.   

    java的垃圾回收是虚拟机自己开一个线程监视的,我们不用管
    vector = null只是提醒java虚拟机该回收了,但是真正的回收时机并不确定楼主可以加大虚拟机内存试试,如果嗨存在内存溢出就是泄露了,这个只能慢慢查,一模块一模块的查
      

  14.   

    内存溢出也可能是因为在连接数据库资源的时候,使用结束之后,并没有关掉(如使用close方法)而导致空间浪费,并不是释放内存的问题,你应该检查代码,把该关掉的相应连接一定要关掉,才能保证空间的高效使用~
      

  15.   

    可以把内存参数调大一些,  vector 里面没有用的东西 remove 掉也能 减少内存
      

  16.   

    关于内存溢出,看下这个: 
    Java内存溢出的详细解决方案
    http://wobuxiaole.iteye.com/blog/408470
      

  17.   

    java看不到内存。不过可以手动把代码写的更好点:退出前把集合里面的东西清空,挨个=null
    设置更好的数据结构。
      

  18.   

    JAVA里面完全没必要,指向NULL也不是释放内存,只是将对象指向一个空指针而已,而以前的内存还在,JVM会自动回收。
    JAVA里面需要释放的东西主要是文件读写句柄,数据库连接,或其他句柄
      

  19.   

    清内存一般情况下不用吧,garbage collector 可以清。觉得需要可以调finalize()方法通知回收。但也是回收器自己定什么时候来回收。
      

  20.   

    给点意见,不知道有没帮助.
    1.GC一直在工作,一般不要去手动的回收垃圾内存。
    2.对于不用的对象及时的值为null,GC不会马上回收,但会提高回收的概率。
    3.既然你的程序测试多次有BUG,内存溢出,建议你优化程序。