| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/12/2011 15:27:40
|
vinicius_roc
JavaEvangelist
Membro desde: 12/06/2009 14:18:31
Mensagens: 365
Offline
|
Boa tarde amigos,
Estou lendo o livro de Introdução à Arquitetura e Design de software e fiquei com uma dúvida em relação a criar ou não varias instâncias de um objeto.
Aqui no livro diz que "segurar objetos em memória estressa demais o GC baseado em cópia de objetos. A boa pratica de OO já diz que devemos criar pequenos objetos encapsulados, sem muitos dados estáticos, originando instãncias sem nos preocuparmos com caches e outros alegadas otimizações." e tambem que "devemos adequar nossa aplicação a hipótese de gerações".
Mas eu vejo por ai, inclusive na empresa onde trabalho, as classes chamadas de Core, que contém varios objetos e funcionalidades comuns a todas as classes do sistemas, e esse Core é iniciado assim que a aplicação é iniciada, criando várias instâncias dos objetos e disponibilizando-os para o resto da aplicação.
A minha dúvida é: É bom fazer assim? Ou seria melhor criar o objeto, desde que não seja pesado, toda vez que invocarmos um método get?
Um exemplo na minha aplicação é uma classe responsável por armazenar todos os repositórios (40). Esses repositórios que são instânciados assim que a classe é instanciada mesmo sendo uma classe bem simples, que recebe apenas um objeto no construtor e se serve apenas dele. Nesse caso não seria melhor guardar só a classe e criar a instância apenas quando dão um get?
Muito Obrigado
|
Att,
Vinicius Roberto |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/12/2011 19:59:05
|
icarocd
JavaBaby
![[Avatar]](/images/avatar/6acb084470c0a8bdf431d5427d1f29bc.jpg)
Membro desde: 12/04/2006 21:46:54
Mensagens: 92
Offline
|
a resposta à sua pergunta depende que voce analise os seguintes pontos abaixo, alem de outros especificos que houver:
-> o recurso que estou instanciando uma vez para toda a aplicacao é 'pesado', ou deve ser unico necessariamente para toda a aplicacao? ex: algum pool de conexoes
-> faz sentido eu instanciar o recurso x na inicializacao da aplicacao, ou na primeira vez que vier a ser utilizado? é um recurso muito demorado de ser preparado? é bastante utilizado ou é algo que é pouco utilizado?
ou seja, nao tem uma resposta pronta. minha recomendacao geral é: faça e matenha uma arquitetura sempre tao simples quanto possivel, evite a "generalidade especulativa" que martin fowler comenta, e evolua à medida que for (realmente) necessario.
fazer coisas a mais traz complicacoes que tendem a se mostrar desnecessarias e confusas com o decorrer da evolucao do seu projeto.
|
Engenheiro de Computação com ênfase em Engenharia de Software pela UEFS/BA
SCJP & SCWCD certified
Desenvolvedor com ênfase Java/JEE/JSE/Grails |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/12/2011 07:03:10
|
FernandoFranzini
GUJ Master
![[Avatar]](/images/avatar/33f6c40df1060aa3c548ad2d499eced0.jpg)
Membro desde: 24/04/2009 12:58:16
Mensagens: 1541
Offline
|
"segurar objetos em memória estressa demais o GC baseado em cópia de objetos. A boa pratica de OO já diz que devemos criar pequenos objetos encapsulados, sem muitos dados estáticos, originando instãncias sem nos preocuparmos com caches e outros alegadas otimizações." e tambem que "devemos adequar nossa aplicação a hipótese de gerações".
Muitos livros falam coisas lindas e maravilhosas do mundo conceitual desejável, mas na pratica vemos que as coisas funcionam bem diferentes....
Segue um material no qual eu ja abordei o assunto:
- http://fernandofranzini.wordpress.com/2009/12/16/praticas-de-aplicativos-web/
- http://fernandofranzini.wordpress.com/2011/12/13/a-famosa-falta-de-memoria-java-lang-outofmemoryerror/
This message was edited 1 time. Last update was at 28/12/2011 08:11:17
|
Fernando Franzini |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/12/2011 08:09:00
|
vinicius_roc
JavaEvangelist
Membro desde: 12/06/2009 14:18:31
Mensagens: 365
Offline
|
Muito obrigado pelos esclarecimentos, vou ler o material e analisar a situação para decidir oque fazer.
Abss
|
Att,
Vinicius Roberto |
|
|
 |
|
|