我用gui写了一个小的java应用,逻辑挺简单,就是循环的扫描数据库中的一个表。结果在服务器上跑了两天后,发现java虚拟机占用的内存达到了70M,而且我主意观察了一阵,内存还在持续上涨,没有下降的趋势。
    由于业务逻辑很简单,又因为数据还没有完全导过来,数据量不大,所以我猜测不大可能是逻辑的问题,很可能出在gui这方面了。
    当我把那个窗口最小化后,奇怪的事情发生了,虚拟机内存突然降到了2M.以后又持续上涨,当我重复同样的事情时,内存又马上降下来。所以,每当最小化窗口时,好像内存就被回收了。不知道有没有人遇到过这种情况。
    我用的是swing,以前从来没有用过,不知道有什么需要注意的地方。虽然现在没出问题,我不知道以后会不会出,毕竟,不可能总有人看着它的,而且它要保证24小时顺利运行的。界面就是不停的在文本框中滚动显示一些信息。如需要我可以把代码贴出来。
     先提前谢谢大家了.^_^

解决方案 »

  1.   

    很明显你的程序有内存泄漏,是不是有什么东西没有dispose,或者用list,map一直在追加使用
    “每当最小化窗口时,好像内存就被回收了“ , 这只是假象,根本就没回收你可以使用JBuilder的Optimizer工具,监测一下,就比较容易发现问题了
      

  2.   

    程序刚刚开始执行时
    内存增长是应该的
    但是应该稳定在一个区域
    否则 就应该是你的程序有问题了
    应该是有些资源没有释放
    你可以找个工具检测一下窗口最小化后
    是要释放资源的
    这个是java自己处理的
      

  3.   

    是不是有什么东西没有dispose---------------------------
    可是怎么进行dispose呢,还有就是应该什么时候调用?