A few thoughts mentioned below:
Application level:
1) If you are displaying huge chunk of data in the UI (say more than 25 rows in a page) then programmatic pagination is must. That is segregate the resultset into different pages (may be 20-25 rows per page). And load data for each page on demand.
2) Give a look at the UI components for the page you are getting less performance and see if it can be simplified with lesser components. I know it is not easy and advisable to redesign at the point when delivery date is close.
3) You can use "Ajax" whenever and wherever possible. It will definitely increase the performance.
4) If you are using session variable make sure you remove it once it is done. DONOT wait till user logoff.
A topic of debate:
1) Hand written java code by professional is always better than generated java code. Hand written java code can always be fined tunned and pin-point using optimization tools like Optimizeit etc.
2) Now million dollar question (or may be some cents) is why jsf is defaulted to session scope and why not defaulted to request scope? How it is removed from the session on page transition? How and when the memory is reclaimed by JVM? As we all know we cannot force JVM to garbage collected.
Server Level:
It is one of the several important steps that needs to be performed in order to get maximum output. It is NOT very difficult and scary to make changes to server setting then sticking onto the default setting. Refer below links to get an insite of it http://www.ibm.com/developerworks/websphere/library/techarticles/0602_lurie/0602_lurie.html
http://whitepapers.techrepublic.com.com/abstract.aspx?docid=325396
http://rifers.org/blogs/gbevin/2005/4/21/get_rid_of_outofmemoryerror
Database Level:
This is under discussion and will be posted shortly.
Debate and discussions are always wel-come.
Regards
Monu





