Estou ciente que todo arquivo JSP é transformado em um Servlet que só depois é compilado. Sei também que o ServletEngine(Tomcat, Resin, etc) deixa o Servlet na memória ao contrário de um CGI Script que executa o programa a cada requisição. A dúvida é a seguinte:
Como o Servlet fica sempre na memória, não seria importante usar as técnicas que evitam o desperdício de memória ou até mesmo chamar o Coletor de Lixo (System.gc()) nas partes críticas do meu Servlet?
Arra, pelo menos alguem que se preocupa com o gerenciamento de memoria nesse mundo
Entao Eddie, nao so em jsp/servlets eh essencial programar de maneira otimizada e sempre se preocupando em fazer um codigo que nao destrua a memoria, mas sim para qualquer programa, seja ele em Java, C, Pascal ou seja la o que for.
Acho que uma tecnica que vai ajudar muito o Garbage Collector eh voce especificar explicitamente quando nao precisa mais de determinado objeto, como por exemplo setando o valor de uma String para null apos seu uso.
Creio que em alguns lugares uma chamada ao garbage collector poderia ser feita, mas nunca se esqueca que ao chamar System.gc() significa que ele rode no momento da chamada. Outra coisa eh ter muito cuidado para nao fazer muitas chamadas consecutivas ( dentro de um loop isso seria terrivel ).
Portanto, sim, eh muito importante se preocupar com a memoria, nunca, em momento algum, deixe de fazer um codigo bom. Se quiser, faca como eu: demore 2, 3 horas a mais para fazer um codigo, mas faca direito e durma tranquilo, sabendo que nao ira precisar dar manutencao “tao” cedo nele ou precisara perder 10 horas pra reescreve-lo quando der um problema. ( digo isso pq conheco mta gente que prefere fazer no esquema “ah, nao eh o certo mas funciona… depois eu mudo”, e esse “depois” eh na verdade nunca ).
Existem várias formas de melhor a performance de JSP/Servelets.
Veja o site http://www.precisejava.com/
Que contém muitas dicas de otimização para J2SE e J2EE
Uma Servlet eh uma classe, todas as clases usadas ficam no ClassLoader! Esse consumo de memoria pelo ClassLoader eh pequeninissimo.
Lembre-se, o container guarda uma servlet (na maioria da vezes) de cada tipo na memoria, isso ocupa MUITO pouco, desde que voce nao tenha atributos na sua servlet, o que acontece 99% do tempo.