Olá pessoal gostaria de saber qual ocuparia menos na mémoria métodos estáticos ou da instância.
E como funcionaria garbage collector para estáticos, pois vejo diferenças no consumo de memoria.
Bom, sobre mémoria, todos vão ocupar a mesma coisa, porém deve analisar sua estratégia.
Exemplo, se você precisar criar muitas instancias de uma classe, talvez seja interessante deixa-la com estática, assim você vai é economizar mémoria.
E objetos estáticos duram enquanto a sua aplicação estiver viva.
Boa sorte
[quote=Murilo_Ferreira]Bom, sobre mémoria, todos vão ocupar a mesma coisa, porém deve analisar sua estratégia.
Exemplo, se você precisar criar muitas instancias de uma classe, talvez seja interessante deixa-la com estática, assim você vai é economizar mémoria.
E objetos estáticos duram enquanto a sua aplicação estiver viva.
Boa sorte[/quote]
Concordo em partes quando voce comeca trabalhar muito com objetos estaticos, sua programação começa a ficar meio estrutural, para esses caso o padrao Singleton talvez seria melhor
Não é questão de ocupar e o recurso estatico não tem esse fim
- Coisas staticas tem o objetivo de ser alocado apenas 1 vez na solução toda. Ou seja, não existe a necessidade de cada processo recriar e liberar memoria com isso. Na solução com static, todos compartilham estes recursos. OBS -cuidado com os acesso simultaneo.
- Coisas de instancia tem o objetivo de ser aloca 1 para cada processo, usuario etc. Ou seja, existe a necessidade de cada processo, usaurio etc, criar aquela determinada recurso para si proprio, não podendo ser compartilhada entre eles.
Depende…existem 3 tipos dentro JVM.
O padrão é o de sempre…quando sua memoria começa chegar na altura de 70%, GC ja pode se apurar para desalocar os objetos em referencias…
[quote=leonardobhbr][quote=Murilo_Ferreira]Bom, sobre mémoria, todos vão ocupar a mesma coisa, porém deve analisar sua estratégia.
Exemplo, se você precisar criar muitas instancias de uma classe, talvez seja interessante deixa-la com estática, assim você vai é economizar mémoria.
E objetos estáticos duram enquanto a sua aplicação estiver viva.
Boa sorte[/quote]
Concordo em partes quando voce comeca trabalhar muito com objetos estaticos, sua programação começa a ficar meio estrutural, para esses caso o padrao Singleton talvez seria melhor[/quote]
É mesmo, e quando você tem uma classe Utilitária que você usa em muitos lugares na sua aplicação, você prefere instanciar um zilhão de vezes, ou deixar a classe com metos estáticos ?
[quote=Murilo_Ferreira][quote=leonardobhbr][quote=Murilo_Ferreira]Bom, sobre mémoria, todos vão ocupar a mesma coisa, porém deve analisar sua estratégia.
Exemplo, se você precisar criar muitas instancias de uma classe, talvez seja interessante deixa-la com estática, assim você vai é economizar mémoria.
E objetos estáticos duram enquanto a sua aplicação estiver viva.
Boa sorte[/quote]
Concordo em partes quando voce comeca trabalhar muito com objetos estaticos, sua programação começa a ficar meio estrutural, para esses caso o padrao Singleton talvez seria melhor[/quote]
É mesmo, e quando você tem uma classe Utilitária que você usa em muitos lugares na sua aplicação, você prefere instanciar um zilhão de vezes, ou deixar a classe com metos estáticos ?[/quote]
Volto a dizer padrao Singleton apenas uma instancia na aplicação inteira e quem controla a instancia seria a propria classe
Então pessoal, aqui tenho 2 sistemas, 1 com 100% apenas com variaveis e metodos de instância e outra misturada.
Ambos são aplicações WEB e o de instância trabalha no singleton para chamada de metodos com propositos genéricos e todos objetos em ambos sistemas para fins de reuso guardo os na sessão.
O porém vem quando dou invalidade, o sistema 100% com instância libera muita mémoria quando dou invalidade e em outro sistema não diminui nada e praticamente apenas aumenta, diminuindo um pouco depois de muito tempo, acho que é quando garbage collector passou.
Isso foi o que me fez pensar no que está acontecendo e priorizar o uso de instancias.
Servidor: Tomcat 6.029, JSF 2.0.
e os seus beans tem qual escopo?
Alguns desses atributos de sessão não teria como jogar para aplicação ?
Esta é questão critica em todo sistemas web, definir o que deve ficar na sessão, aplicação, ou utilizar por demanda a cada execução.
[quote=leonardobhbr][quote=Murilo_Ferreira][quote=leonardobhbr][quote=Murilo_Ferreira]Bom, sobre mémoria, todos vão ocupar a mesma coisa, porém deve analisar sua estratégia.
Exemplo, se você precisar criar muitas instancias de uma classe, talvez seja interessante deixa-la com estática, assim você vai é economizar mémoria.
E objetos estáticos duram enquanto a sua aplicação estiver viva.
Boa sorte[/quote]
Concordo em partes quando voce comeca trabalhar muito com objetos estaticos, sua programação começa a ficar meio estrutural, para esses caso o padrao Singleton talvez seria melhor[/quote]
É mesmo, e quando você tem uma classe Utilitária que você usa em muitos lugares na sua aplicação, você prefere instanciar um zilhão de vezes, ou deixar a classe com metos estáticos ?[/quote]
Volto a dizer padrao Singleton apenas uma instancia na aplicação inteira e quem controla a instancia seria a propria classe[/quote]
oops, não tinha entendido o que você falow antes, foi mal.
[quote=leonardobhbr]e os seus beans tem qual escopo?
Alguns desses atributos de sessão não teria como jogar para aplicação ?
Esta é questão critica em todo sistemas web, definir o que deve ficar na sessão, aplicação, ou utilizar por demanda a cada execução. [/quote]
Sim, tinha esquecido mesmo do application, vou experimentar pra ver no que vai dar.
Mas, posso concluir então que métodos estáticos não interfere no desempenho e no uso da memória?
[quote=tsunemisan]Então pessoal, aqui tenho 2 sistemas, 1 com 100% apenas com variaveis e metodos de instância e outra misturada.
Ambos são aplicações WEB e o de instância trabalha no singleton para chamada de metodos com propositos genéricos e todos objetos em ambos sistemas para fins de reuso guardo os na sessão.
O porém vem quando dou invalidade, o sistema 100% com instância libera muita mémoria quando dou invalidade e em outro sistema não diminui nada e praticamente apenas aumenta, diminuindo um pouco depois de muito tempo, acho que é quando garbage collector passou.
Isso foi o que me fez pensar no que está acontecendo e priorizar o uso de instancias.
Servidor: Tomcat 6.029, JSF 2.0.
[/quote]
Sim…totalmente normal…
Static sobe na memoria no primeira referencia e fica la até o System.exist do programa. Ou seja, se for web com tomcat…nunca sera coletada…
A diretriz é…
Use o statico para recursos compartilhados da solução…ou seja é mais barato gastar 1 vez e compartilhar para todos…do que ficar repetitivamente alocando e desalocando a mesma coisa duplicadamente para cada um…em termos de performence é pior…
O erro do programador é deixar static oq não é…e não deixar estatico oq deveria ser…
Vlw pessoal, já deu pra ter umas idéias e agora vou experimentar umas coisas pra me convencer mesmo.