みんな私は新しく、英語ではありません。送信ボタンでX秒ごとにユーザーのクリックをシミュレートするjs setIntervalの使用に問題があります。このページには、h:form と h:commandButton が 1 つだけあります。プロファイラーを使用すると、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 だけを使用していますが、glassfish によって生成された heapDump があります。これはスクリーンショットですが、評判が低すぎるため投稿できません。ただし、java.lang.Object[] はヒープの 20%、java.util.HashMap$Entry[]18%、HashMap 10% を消費します。
更新: こんにちは、皆さん、問題を解決し、CDI 依存関係/インジェクションのバグを発見しました。@ManagedBean でアノテーション @Named を変更する問題を解決しました。これで問題が解決しました。この例では、CDI にはバグがないと思われるため、コードを省略しました。明らかに、@Named で注釈が付けられた Bean はリクエスト スコープを持ちますが、ApplicationScoped Bean はバグを生成しません。私は CDI に比較的慣れていないので、どこにバグを報告する必要がありますか?