नोट: मैं mojarra 2.1.20 और समृद्ध चेहरे 4.2.2 का उपयोग कर रहा हूं।जेएसएफ ईएल और समग्र घटकों के माध्यम से स्मृति को लीक कर रहा है
मैंने एक हेपडम्प का विश्लेषण किया है और मैंने देखा है कि सत्र में एलआरयूएमएपी में ईएल अभिव्यक्तियां रहती हैं। क्या किसी को पता है कि इससे बचने के लिए क्यों और क्या करना है? समर्थन सेम my.package.MultiComboSelection साथ
<rich:select ... valueChangeListener="#{cc.listValuesChangeListener}"
:
समस्या मैं एक समग्र घटक निम्न पंक्ति युक्त से संबंधित है। जाहिर है my.package.MultiComboSelection में एक विधि परिभाषित सूची है ValuesChangeListener।
समस्या जो मैं देखता हूं वह यह है कि LRUMap में ContextualCompositeMethodExpression (उपरोक्त मूल्यChangeListener के लिए अभिव्यक्ति का प्रतिनिधित्व) शामिल है, जो cc विशेषता संदर्भ मल्टीकंबो चयन। मल्टीकंबो चयन यूआईएनएमिंगकंटनर को बढ़ाता है और इस तरह माता-पिता/बच्चों के गुण होते हैं - घटक पेड़ के संदर्भ हैं।
नतीजा यह है कि स्मृति के 16MB नहीं किया जा कचरा-एकत्र कर सकते हैं एक संदर्भ श्रृंखला है क्योंकि वहाँ है:
सत्र-> LRUMap-> ContextualCompositeMethodExpression-> MultiComboSelection-> माता पिता और 16MB
सवाल यह है - यह क्यों हो रहा है और इसे कैसे ठीक किया जाए या इसके आसपास काम कैसे करें?
Class Name | Shallow Heap | Retained Heap | Retained Heap
--------------------------------------------------------------------------------------------------------------------------------------------
my.package.MultiComboSelection @ 0x78dc2bd50 | 96 | 16 466 272 | 16 466 272
|- component javax.faces.component.UIComponentBase$FacetsMap @ 0x78dbbbd58 | 48 | 128 |
|- parent javax.faces.component.UIPanel @ 0x78dbbbdd8 | 88 | 760 |
|- cc com.sun.faces.facelets.el.ContextualCompositeMethodExpression @ 0x78dc2bce0 | 32 | 16 466 384 |
| |- [0] java.lang.Object[2] @ 0x78dc2bc90 | 24 | 16 466 464 |
| | '- [0] java.lang.Object[1] @ 0x78dc2bc78 | 24 | 16 466 488 |
| | '- [0] java.lang.Object[5] @ 0x78dc2bc20 | 40 | 16 466 576 |
| | '- [0] java.lang.Object[2] @ 0x78dc2bc08 | 24 | 16 466 600 |
| | '- [0] java.lang.Object[4] @ 0x78dc2bbe8 | 32 | 16 466 632 |
| | '- value java.util.HashMap$Entry @ 0x78dc2bb40 | 32 | 16 466 800 |
| | '- [1579] java.util.HashMap$Entry[2048] @ 0x78dbf61b8 | 8 208 | 33 552 536 |
| | '- table java.util.HashMap @ 0x78dbb6860 | 48 | 33 552 584 |
| | '- [1] java.lang.Object[2] @ 0x78ad95340 | 24 | 33 552 608 |
| | '- value java.util.LinkedHashMap$Entry @ 0x78ad952c0 | 40 | 33 552 736 |
| | |- after, before java.util.LinkedHashMap$Entry @ 0x78acbe6a0| 40 | 40 |
| | |- [0] java.util.HashMap$Entry[2] @ 0x78ad952a8 | 24 | 24 |
| | | '- table com.sun.faces.util.LRUMap @ 0x78ad95270 | 56 | 33 552 856 |
--------------------------------------------------------------------------------------------------------------------------------------------
धन्यवाद। मैं इस मुद्दे की रिपोर्ट करूंगा। – mabn
हम इससे प्रभावित थे। यह ढेर डंप से स्पष्ट था कि ContextualCompositeMethodExpression ने 6.5 एमबी प्रत्येक लिया। कामकाज ने समस्या को हल किया। – ymajoros