我重新做了机器,安装winxp sp2,安装jdk1.5.0_07,安装了tomcat5.5.17.然后启动tomcat,监测tomcat内存,发现tomcat启动后,内存还是会慢慢的上涨请问为什么会出现这样的现象,能怎么处理呢

解决方案 »

  1.   

    可能你程序中的一些资源没有释放吧。比较经典的就是处理数据库的时候把 Connection ,Statement,ResultSet这三个对象设成了成员变量,而没有设成局部变量。lz的问题描述不是很清楚,所以不好解释。
      

  2.   

    奥,这段时间没在,我现在详细描述一下:   操作系统 winxp sp2 应用服务器 tomcat5.5.17 虚拟机 jdk1.5.0_07  我自己的应用服务 test 应用服务器监测工具 jprofiler 测试工具 jmeter  我在晚上6点使用jprofiler监测tomcat运行情况,使用jmeter并发300个访问test/test.html,其中test.html就是一个空白的页面;在启动jmeter之前,tomcat使用内存是26mb,启动jmeter访问后,tomcat使用内存到了50mb,在第二天早上9点,我看到tomcat使用内存一直到了156mb,我使用jprofiler的run gc进行垃圾回收,tomcat使用内存到了120mb就不在被回收了;此时我停止jmeter的300个并发,并使用jprofiler的run gc进行垃圾回收,tomcat使用内存到了72mb就不在被回收了。   整个过程就是这样,为什么内存回不到初始状态或者只上涨一点呢,如果按这种上涨程度,那用不了几天内存就会吃到1g,请问这种问题怎么解决?
      

  3.   

    这个情况就很复杂了,可能有延迟加载,比方说有些servlet在第一次请求的时候才创建,然后又没有被destroy掉,这些东东都可能会占用你的内存的.
      

  4.   

    内存当然会长了,直到你的-Xmx指定的最大值。当然,中间空闲时也会进行垃圾回收并释放部分内存。
      

  5.   

    tomcat5.5.17一般不会有内存上涨不释放的bug吧,是不是主要还会是程序访问问题。另外如果有list,没有赋null的话,是不是内存也不会释放;还有使用连接池的时候,访问数据库出现网络瞬断现象会不会吃内存不放呢
      

  6.   

    to java2000_net:
       内存不能完全释放的话,会不会内存最后还是被消耗尽
      

  7.   

    如 9楼 的“内存当然会长了,直到你的-Xmx指定的最大值”
    如果应用的问题,最后会 memory out