我有一个使用 Tomcat 6 提供的 JAX-RS 网络服务。我正在使用 Guice 注入我的资源并创建 Servlet。
我肯定有内存泄漏,我认为这是因为我没有处理请求的结束或应用程序的关闭。
如果我不断刷新针对该服务的请求,我可以看到 Tomcat 的内存使用量会攀升并且在我回收 Tomcat 之前不会减少。
我尝试过 RTFM,但我并没有探索生命周期。
我使用创建 Servlet
public class RadWebServiceServletConfig extends GuiceServletContextListener {
@Override
protected Injector getInjector() {
return Guice.createInjector(new JerseyServletModule() {
@Override
protected void configureServlets() {
// Must configure at least one JAX-RS resource or the
// server will fail to start.
bind(Crags.class);
bind(IDataFacade.class).to(DataFacade.class);
bind(IRepository.class).to(Repository.class);
//filter all requests to log
filter("/*").through(LoggingFilter.class);
// Route all requests through GuiceContainer
Map<String, String> params = new HashMap<String, String>();
params.put("com.sun.jersey.spi.container.ContainerRequestFilters",
"com.sun.jersey.api.container.filter.GZIPContentEncodingFilter");
params.put("com.sun.jersey.spi.container.ContainerResponseFilters",
"com.sun.jersey.api.container.filter.GZIPContentEncodingFilter");
serve("/*").with(GuiceContainer.class, params);
}
});
}
}
那我是不是很傻?我在哪里捕获请求或应用程序上下文的结束?