目前與Primefaces 3.4.2一起工作,我們注意到如果您使用ajax瀏覽我們的應用程序,而不重新加載頁面,那麼我們會開始使用大量內存。目前使用一個名爲CCDump的程序來分析firefox中的內存,並注意到我們抓住了很多殭屍dom對象。縮小到重點由以下primefaces創建一個對象上selectBooleanCheckboxPrimefaces性能問題
<p:selectBooleanCheckbox id="compareChkbx"
value="#{cc.attrs.xProd.selected}" styleClass="selectBooleanCheckbox"
rendered="#{dto.size > 1}" >
<p:ajax event="change" oncomplete="radioButtonSelected()"
listener="#{compareBean.onClickCompare(cc.attrs.xProd, cc.attrs.dto.partTerminology.partTerminologyId)}" update=":hform:lookupResults:pageInfo :hform:compareProducts:compareGroup @this" process="@this" />
</p:selectBooleanCheckbox>
而且我看到數百本實例的元素,當我運行CC分析。如果我「顯示圖表」上的元素之一,我得到如下:
FragmentOrElement (xhtml) input id='lookupResults:CatResultList:0:aapPartType:list-by-cat:22:aapProd:aapProd:compareChkbx_input' http://localhost:8080/epcfe-web/main.xhtml
JS Object (HTMLInputElement)
FragmentOrElement (xhtml) div class='ui-helper-hidden-accessible' http://localhost:8080/epcfe-web/main.xhtml
FragmentOrElement (xhtml) div id='lookupResults:CatResultList:0:aapPartType:list-by-cat:22:aapProd:aapProd:compareChkbx' class='ui-chkbox ui-widget selectBooleanCheckbox' http://localhost:8080/epcfe-web/main.xhtml
nsChildContentList
nsEventListenerManager
我注意到的是,導航的同時申請後,我結束了在螢火蟲腳本標籤hundereds javax.faces.resource/jquery/jquery.js.xhtml?ln=primefaces/eval/seq/xx
另一件事
我認爲有一個監聽器沒有被取消分配,連接到由p:selectBooleanCheckbox
創建的div,我只是想知道如何在用ajax重新加載頁面的那一部分後釋放該對象。
第一個環節提供節目令人難以置信的自我研究和調試能力。 +1給你的答案,並希望我可以把它給任何bayer-dba在PF論壇。 –