-
FEATURED COMPONENTS
First time here? Check out the FAQ!
Hi,
currently our application in production has significant memory problems.
Most of it is ZK - about 64% of Heap space. (See blelow)
Are there best practices for saving memore? We have a Fat RIA, one main page for all.
We use EventThreads. All Composers are also EventListeners which register at the created Components.
No Clustering currently.
Is there any chance to handle a correct cleanup of components from outside?
E.g. if we check that a session is ended to destroy any associated Desktops, Components etc., cleanup any Circular References, etc.?
Should we use a GlobalDesktopCache? What about the components and the composer/Listener in the Desktop? Can they be reused?
Its ZK 3.6.3 at the moment, our next version will be ZK5.
Regards,
Jonas
Package Retained Heap Retained Heap, % # Top Dominators <all> 916.762.104 100,00% 1.227.612 </b> org 681.051.936 74,29% 530.979 zkoss 627.188.208 68,41% 524.796 zk 373.357.576 40,73% 26.785 ui 365.149.904 39,83% 5.526 impl 339.236.872 37,00% 3.055 DesktopImpl 236.247.792 25,77% 760 EventProcessingThreadImpl 98.794.424 10,78% 760 Total: 2 entries 335.042.216 1.520 http 24.921.584 2,72% 1.536 SimpleWebApp 24.521.056 2,67% 2 Total: 2 entries 364.158.456 4.591 zul 195.397.688 21,31% 411.073 Textbox 44.639.480 4,87% 31.082 Window 22.595.072 2,46% 9.097 Label 15.625.488 1,70% 72.805 Checkbox 11.618.536 1,27% 6.823 Row 9.223.352 1,01% 37.901 Button 9.181.408 1,00% 12.892 Total: 6 entries 112.883.336 170.600 zkplus 46.117.640 5,03% 35.640 databind 46.117.496 5,03% 35.638 AnnotateDataBinder 38.282.040 4,18% 2.275 zhtml 9.241.776 1,01% 46.385 Total: 4 entries 624.114.680 519.883 apache 51.747.712 5,64% 4.326 catalina 19.522.288 2,13% 1.796 connector 11.866.336 1,29% 826 tomcat 13.458.256 1,47% 350 util 13.458.256 1,47% 350 threads 13.383.472 1,46% 207 ThreadWithAttributes 13.372.904 1,46% 100 Total: 2 entries 32.980.544 2.146 Total: 2 entries 678.935.920 529.122
If you need to do something whenever the Session is destruct, you can implement a SessionCleanup listener and specify the class in zk.xml.
http://www.zkoss.org/javadoc/5.0/zk/org/zkoss/zk/ui/util/SessionCleanup.html
To use less memory generally means you have to properly arrange your UI pages(Just enough components for the end user to see and input). It is really depends on how you design your application.
And unless you see the memory is not "freed" back to JavaVM, it is not a memory leak.
I have similar issue.
I have a tabbed application and on one of the tabs we click we have around 30000 records loaded from the db. Used memory shoots very high.
And i go on various tabs, do various operations (not on this tab) but still up gone memory doesn't come down.
Can any one suggest what might be the issue?
Do we need to reclaim the memory used by ZKoss periodically?
Pl. guide.
@javaenthu,
How did you load the 30000 records? Into a <listbox> as <listitem> or into a Listmodel? There are some tips to manage huge data in your application. Search "zk huge data" shall give you some hints.
Asked: 2010-05-28 05:09:25 +0800
Seen: 691 times
Last updated: Mar 28 '12