服务器版本:Apache Tomcat / 8.0.26
服务器内置:2015年8月18日11:38:37 UTC
服务器号:8.0.26.0
操作系统名称:Linux
操作系统版本:2.6.32-642.3.1.el6.x86_64
架构:amd64
JVM版本:1.8.0_60-b27
JVM供应商:Oracle Corporation
我正在使用jedis版本:2.8.2(commons-pool2:2.4.2)当我关闭tomcat时,会有一些警告消息 .
13-Feb-2017 08:12:14.006 WARNING [localhost-startStop-2] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads The web application [ROOT] appears to have started a thread named [commons-pool-EvictionTimer] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
java.lang.Object.wait(Native Method)
java.util.TimerThread.mainLoop(Timer.java:552)
java.util.TimerThread.run(Timer.java:505)
这是一些jedis .
...
@Bean(name = "jedisConnectionFactory", destroyMethod = "destroy")
public JedisConnectionFactory jedisConnectionFactory() throws IOException {
final Properties redisConfig = PropertiesLoaderUtils.loadProperties(
new PathMatchingResourcePatternResolver().getResource("classpath:redis.properties"));
final JedisConnectionFactory result = new JedisConnectionFactory();
result.setHostName(redisConfig.getProperty("redis.hostName"));
result.setPort(Integer.parseInt(redisConfig.getProperty("redis.port")));
result.setUsePool(Boolean.parseBoolean(redisConfig.getProperty("redis.pool.use")));
result.setTimeout(Integer.parseInt(redisConfig.getProperty("redis.timeout")));
result.setPoolConfig(createJedisPoolConfig(redisConfig));
result.afterPropertiesSet();
return result;
}
...
我怎样才能解决这个问题?
1 回答
看起来像一个已知问题,请参阅https://github.com/xetorthio/jedis/issues/936 .
显然,您不需要清理
JedisConnectionFactory
本身,而是需要在工厂帮助下创建的连接池 .