我负责的一个网站
最近出现内存泄漏问题(已经确认,肯定是内存泄漏)
我用jprofiler5监控内存使用 结果
貌似是jstl没有被垃圾回收(截图时已经手动回收过了)
有20个对象不能回收
(这个页面的其他对象被回收了)
各位大大 给看看吧 所有分奉上
jsp页面相关代码(使用jstl)
<c:set var="f" value="false" /> <c:forEach var="s" items="${list}"> <c:if test="${f}"> <div class="search_1"> <div class="search_3"> <div class="search_img"> <a target="_blank" href="/<c:out value='${s.id}'/>.html"> <c:if test="${not empty s.pic1}"> <img src="/upload/<c:out value='${s.subsiteId}'/>/<c:out value='${s.pic1}' />" alt="" width="162" height="125" border="0" /></c:if> <c:if test="${empty s.pic1}"> <img src="/images/cl_xt.gif" width="162" height="125" border="0" /></c:if> </a></div> <div class="searchwzmain"> <div class="search_wz"><a target="_blank" href="/<c:out value='${s.id}'/>.html" class="ch06"> <c:out value="${s.name}" /> </a></div> <div class="search_wzjj" style="overflow:hidden;">商户简介: <c:out value="${s.shortDescption}" /> ...[<a target="_blank" href="/<c:out value='${s.id}'/>.html">详细信息</a>] </div> <div class="search_wz2" style="overflow:hidden;">详细地址: <c:out value="${s.address}" /> </div> <div class="search_wz3">预订热线: <c:out value="${s.telPhone}" escapeXml="false"/> </div> </div> <div class="searchwzmainright"> <div class="zkwz">折扣: <c:out value="${s.shortZk}" /> </div> <!--<div class="yhqbtn"> <img src="newtu/yhq_btn.gif" width="120" height="30" /> </div>--> <div class="yhqbtn"> <c:if test="${'VIP会员商铺' eq s.payed.name || s.payed.name eq '普通会员商铺' }"> <a target="_blank" href="order.do?category=<c:out value='${param.category}'/>&slcid=<c:out value='${param.slcid}'/>&sid=<c:out value='${s.id}'/>"> <img src="newtu/yud_1.gif" border="0" /> </a> </c:if> <c:if test="${s.payed.name eq '非会员商铺' }"> <img src="newtu/yud_2.gif" border="0" /> </c:if> </div> </div> </div> </div> </c:if> <c:if test="${not f}"> <div class="search_2"> <div class="search_3"> <div class="search_img"> <a target="_blank" href="/<c:out value='${s.id}'/>.html"> <c:if test="${not empty s.pic1}"> <img src="/upload/<c:out value='${s.subsiteId}'/>/<c:out value='${s.pic1}' />" alt="" width="162" height="125" border="0" /> </c:if> <c:if test="${empty s.pic1}"> <img src="/images/cl_xt.gif" width="162" height="125" border="0" /> </c:if> </a></div> <div class="searchwzmain"> <div class="search_wz"><a target="_blank" href="/<c:out value='${s.id}'/>.html" class="ch06"> <c:out value="${s.name}" /> </a></div> <div class="search_wzjj" style="overflow:hidden;">商户简介: <c:out value="${s.shortDescption}" /> ...[<a target="_blank" href="/<c:out value='${s.id}'/>.html">详细信息</a>] </div> <div class="search_wz2" style="overflow:hidden;">详细地址: <c:out value="${s.address}" /> </div> <div class="search_wz3">预订热线: <c:out value="${s.telPhone}" escapeXml="false"/> </div> </div> <div class="searchwzmainright"> <div class="zkwz">折扣: <c:out value="${s.shortZk}" /> </div> <!--<div class="yhqbtn"> <img src="newtu/yhq_btn.gif" width="120" height="30" /> </div>--> <div class="yhqbtn"> <c:if test="${'VIP会员商铺' eq s.payed.name || s.payed.name eq '普通会员商铺' }"> <a target="_blank" href="order.do?category=<c:out value='${param.category}'/>&slcid=<c:out value='${param.slcid}'/>&sid=<c:out value='${s.id}'/>"> <img src="newtu/yud_1.gif" border="0" /> </a> </c:if> <c:if test="${s.payed.name eq '非会员商铺' }"> <img src="newtu/yud_2.gif" border="0" /> </c:if> </div> </div> </div> </div> </c:if> <c:set var="f" value="${not f}" /> </c:forEach>
内存溢出的可能有资源未释放,将不为空的对象直接指向新创建的对象,我想的话,问题可能在于Java代码
<c:set var="f" value="${not f}" />
内存溢出的可能有资源未释放,将不为空的对象直接指向新创建的对象,我想的话,问题可能在于[code="java"][/code],其实奇偶判断可以采用forEach的内置变量,如:[code="java"]
/c:if
/c:forEach
[/code]来处理。
s.pic1 是啥?
你这个代码实在是看不清楚到底是什么呢。
建议你的调试方式。
先把那些都去掉。留个foreach,看看释放不,释放了。加一点代码,再测试,直到发现溢出,然后对代码进行修改。
能看看你的Java处理代码么?
我感觉不是你的JSTL泄漏了,很可能是处理的Java代码Action存在泄漏了.
JSTL没到这么高级吧? 能让内存泄漏,呵呵?