球员我是新来的,我不是英语。 我有一个使用js setInterval的问题,它可以模拟用户每隔X秒按下一次提交按钮。 在页面中只有一个h:form和h:commandButton。 我使用探查器,我发现java.util.HashMap连续增加它的大小。 几个小时后,使用堆的大小增长很多尊重的起点。setInterval jsf2.0 glassfish v3和内存泄漏
请帮助我,这个问题让我发疯。
这是代码:
<?xml version = "1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html">
<h:head>
<script type="text/javascript">
var timeoutId = window.setInterval("userClick()" , 1000);
</script>
</h:head>
<h:body>
<h:panelGroup id="testo">test</h:panelGroup>
<h:form prependId="false" >
<h:commandButton id="buttonId"
action="null"
value="Invia">
<f:ajax event="click" execute="@form" render=":testo"/>
</h:commandButton>
</h:form>
<script type="text/javascript">
function userClick()
{
document.getElementById('buttonId').click();
}
</script>
</h:body>
</html>
更新:又1天后的应用程序崩溃。 现在我只使用setInterval,但我有glassfish生成的heapDump,这是截图,但我无法发布它,因为我的声誉太低。然而,java.lang.Object []消耗堆的20%,java.util.HashMap $ Entry [] 18%和HashMap 10% 任何想法?
更新: 嗨,大家好我已经解决我的问题,并已发现在CDI依赖/注入的错误。 我已经解决了我的问题,使用@ManagedBean更改Annotation @Named,这解决了我的问题。 在这个例子中,我省略了代码,因为我认为CDI没有bug。 显然,使用@Named注解的Bean具有请求作用域,而ApplicationScoped Bean不会产生该错误。 我对CDI比较新,所以我必须报告错误?
请复制并粘贴'setInterval'调用和它正在运行的代码。 – 2010-09-19 14:21:54
这会每秒向服务器发送一个请求,因此您可能需要查看处理请求的方式。您可能还想调高间隔计时器,1秒很短,因为往返时间可能会比此更长。 – BGerrissen 2010-09-19 15:20:33
如果我增加间隔内存增长缓慢,但几天后服务器崩溃outOfMemory.Betaly网页必须在浏览器中打开。 – 2010-09-19 15:42:59