ребята, я новичок, и я не английский. У меня проблема с использованием js setInterval, которые имитируют щелчок пользователя каждые X секунд на кнопке отправки. На странице есть только один h:form и h:commandButton. Я использую профилировщик и вижу, что размер java.util.HashMap постоянно увеличивается. Через несколько часов используемый размер кучи значительно увеличился относительно начальной точки.
Пожалуйста, помогите мне, эта проблема сводит меня с ума.
Это код:
<?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, но у меня есть heapDump, сгенерированный Glassfish, это скриншот, но я не могу опубликовать его, потому что моя репутация слишком низкая. однако java.lang.Object[] потребляет 20% кучи, java.util.HashMap$Entry[]18% и HashMap 10% Есть идеи?
Обновление: Привет, ребята, я решил свою проблему и обнаружил ошибку в зависимости/внедрении CDI. Я решил свою проблему, изменив аннотацию @Named на @ManagedBean, и это решило мою проблему. В примере я опустил код, потому что думаю, что CDI не содержит ошибок. Очевидно, что Bean-компонент с аннотацией @Named имеет запрос Scoped, в то время как Bean-компонент ApplicationScoped не создает ошибку. Я относительно новичок в CDI, так куда я должен сообщить об ошибке?
setInterval
и код, который он выполняет. - person T.J. Crowder   schedule 19.09.2010