【发布时间】:2014-09-28 03:03:25
【问题描述】:
有没有办法检查 servlet 是否已被释放到应用服务器的内存中。 例如,我运行 doPost 方法并成功输出了我从服务器询问的 json 数据。它是否已经被释放到内存中?如果没有,有没有办法调用 servlet 的释放?
谢谢,
好吧,这就是我所做的,基本上我是从 javascript 调用客户端 POST 到
$.ajax({
type : "POST",
url : "GetSampleServlet",
data : "{}",
contentType : "application/x-www-form-urlencoded",
dataType : "json",
success : function(response) {
$("#employee_per_tm_table_view").html("");
var resultsArray = (typeof response) == 'string' ? eval('('
+ response + ')') : response;
}
那么 servlet 上有一个 doPost 方法。 CallableStatement st = conn.prepareCall(sql);
ResultSet data;
data = st.executeQuery();
response.setContentType("application/json");
response.setCharacterEncoding("utf-8");
response.getWriter().write(ResultSetConverter.convert(data).toString());
try {
st.close();
} catch (SQLException logOrIgnore) {
}
try {
conn.close();
} catch (SQLException logOrIgnore) {
}
} catch (SQLException e) {
response.setContentType("application/json");
response.setCharacterEncoding("utf-8");
response.getWriter().write((e).toString());
} catch (JSONException f) {
response.setContentType("application/json");
response.setCharacterEncoding("utf-8");
response.getWriter().write((f).toString());
} catch (NullPointerException g) {
response.setContentType("application/json");
response.setCharacterEncoding("utf-8");
response.getWriter().write((g).toString());
} catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
【问题讨论】:
-
你在说什么“释放到内存”。 “发布 servlet”是什么意思?
-
我的意思是,一旦它输出了我从服务器请求的 json 数据,它是否由 appserver 发布?所以从堆中清除了?
-
那将是相当低效的,你不觉得吗?不需要垃圾收集 servlet 实例。为什么你认为有?
-
嗨@Kayaman,我的意思是我希望它从应用服务器/servlet 容器的实例池中释放。这可能吗?
-
问题是,当我尝试调用 servlet 前 10 次时,它的响应速度非常快,但是当我尝试在 10 次连接后调用它时,它开始变慢,所以我只是问是否在那个服务调用之后它已经被释放了吗?