Servlet e desempenho

10 respostas
E

quando dois servlets são carregados e eles instanciam objetos de uma mesma classe, esse objeto é único ou existirão várias copias dele na memória?

10 Respostas

cv1

Varios, a menos que vc use SingleThreadModel, o que eh extremamente irrecomendavel.

ricardolecheta

da uma olhada aqui:

http://www.guj.com.br/servlet/guj?PARSE=true&MAMUTE_ACTION=br.com.guj.action.ListArticle&MAMUTE_TEMPLATE=ShowArticle&LIST_ARTICLE=single&ArticleId=17&PAGE=1

A

Caro CV,

se vc não utilizar SingleThreadModel, o q fará para o seu Servlet implemetar seguranças no dados e virar ThreadSafe ?

Rafael_Steil

SinglheTheadModel permite UM UNICO acesso por vez, e nao varios simultaneos. Se voce desejar acesso unico a determinado objeto, sincronize ele ou parte dele ( usando synchronized ).

Varios objetos sao instanciados como em qualquer aplicacao, ou seja, cada thread tem a sua copia local ( desde que o objeto nao seja static, claro ).

Rafael

cv1

Perder alguns minutos pensando direito na sincronizacao deles, e manter os dados realmente sensiveis em ThreadLocals? :smiley:

louds

Perder alguns minutos pensando direito na sincronizacao deles, e manter os dados realmente sensiveis em ThreadLocals? :D

Muito, mas muito cuidado mesmo quando for usar ThreadLocals em ambiente j2ee. Nunca deixe de limpar todas suas ThreadLocals antes de sair do request.

Eu poderia listar uma duzia de problemas derivados de usar essas belezinhas com j2ee…

Como regra geral ThreadLocals e Thread pools não se dão muito bem, principalmente quando vc não tem controle do pool.

A

é isso ai…

mas acho q essa questão pode ser solucionada qdo temos hardware. No meu caso, tenho um cliente grande (instituição financeira) onde por sugestao da propria Sun, temos q utilizar o SingleThreadModel, para não temos nenhum problema. O desempenho cai, mas o ambiente de produção é extremamente ignorante. Servidores Sun E10000 (em cluster) com o maximo de memoria permitido, o maximo de processadores permitidos.

cv1

Andrew, nao ponha no hardware aquilo que um mero software bem feitinho resolve :wink:

Alias, se vcs tem grana pra usar um puta hardware desses, pq vcs ainda tao usando servlets?! Um framework web que ja cuidasse dessa meio-de-campo pra vcs resolveria bem melhor :wink:

louds

“cv”:
Andrew, nao ponha no hardware aquilo que um mero software bem feitinho resolve :wink:

Alias, se vcs tem grana pra usar um puta hardware desses, pq vcs ainda tao usando servlets?! Um framework web que ja cuidasse dessa meio-de-campo pra vcs resolveria bem melhor ;)

Pra usar webwork não precisa ter grana. :wink:
E com ele vc já resolve o problema de concorrencia.

cv1

Me expressei mal. Na verdade o lance eh ter “tempo” pra desenvolver :wink:

Criado 17 de dezembro de 2003
Ultima resposta 18 de dez. de 2003
Respostas 10
Participantes 6