我正在使用Tomcat 6.0,JDK 1.6的Web应用程序。
经常需要手动重新启动,日志文件显示如下:
注意:为地址为null和端口为80的连接器创build的最大线程数(200)
其次是:
注意:等待200个实例被释放
接下来是200行:
严重:Web应用程序[]仍在处理尚未完成的请求。 这很可能造成内存泄漏。 您可以通过使用标准Context实现的unloadDelay属性来控制允许请求完成的时间。
接下来是200行:
严重:Web应用程序[]使用types为[net.sourceforge.jtds.jdbc.DateTime $ 1](值为[net.sourceforge.jtds.jdbc.DateTime$1@1d51620])的键创build了一个ThreadLocaltypes的值[java .util.GregorianCalendar](value [java.util.GregorianCalendar [time = 1304607600000,areFieldsSet = true,areAllFieldsSet = false,lenient = true,zone = sun.util.calendar.ZoneInfo [id =“Asia / Seoul”,offset = 32400000,dstSavings = 0,useDaylight =假,转换= 14,lastRule =空],Firstdayofweek可= 1,minimalDaysInFirstWeek = 1,ERA = 1,YEAR = 2011,MONTH = 4,WEEK_OF_YEAR = 19,WEEK_OF_MONTH = 1,DAY_OF_MONTH = 6 ,DAY_OF_YEAR = 126,DAY_OF_WEEK = 6,DAY_OF_WEEK_IN_MONTH = 1,AM_PM = 0,HOUR = 0,HOUR_OF_DAY = 0,MINUTE = 0,SECOND = 0,MILLISECOND = 0,ZONE_OFFSET = 32400000,DST_OFFSET = 0]])在Web应用程序停止时将其删除。 这很可能造成内存泄漏。
我看到这是GregorianCalendar日历正在泄漏,并没有像往常一样。
该网站通常会创buildGregorianCalendar实例,添加几个月或几年,格式化生成的Date,并将值输出给用户。 但是,我希望GregorianCalendar实例在servlet完成其请求处理方法后立即被标记为收集。
这是怎么回事?
这可能不是一个内存泄漏…你的连接器线程池的大小为200(默认),并且所有200个连接都在使用中,这表明你有200个请求没有被终止…其余的日志是因为你停止与这200个未决请求的Tomcat …所以问题是为什么你的请求没有响应? 你可以做一个线程转储来查看请求被阻止的地方…