Mensagens enviadas por: joaosiqueira
Índice dos Fóruns » Perfil de joaosiqueira » Mensagens enviadas por joaosiqueira
Autor Mensagem
davidtiagoconceicao wrote:
What code shapes does the JVM optimize best? Here is a list.
Methods
* Methods are often inlined. This increases the compiler's "horizon" of optimization.
* Static, private, final, and/or "special" invocations are easy to inline.
http://wikis.sun.com/display/HotSpotInternals/PerformanceTechniques


Hola,


Isto ainda nao responde as duvidas, pois vejo no artigo:

It's OK to store them in static final fields, too.
Static final fields can hold non-primitive, non-string constants.
Static, private, final, and/or "special" invocations are easy to inline.

Portanto static sao muito mais rapidas... como se prova! Nao existem razoes para nao quererem usar, vejo o contrario indicaçoes recomendando da propria JVM!!
Mauricio Linhares wrote:
Quando você chama um método estático nenhuma instância é criada em lugar nenhum. É exatamente por não existir uma instância que o método é chamado de estático.


Mas indiretamente a VM cria uma instancia da classe, pois imagina se vc tem uma variavel membro static... esta fica retida na memoria ate a VM ser derrubada... nao importando se vc cria o objeto via new ou chame via Classe.variavel

Creio que a VM diferencia de alguma forma o static nos metodos e variaveis dos sem.
Se pensarmos no fato de um valor compartilhado permancer na memoria para todas as instancias, podemos imaginar em alguma acelaraçao no codigo por ja estar carregado...

abrs
Vamos la pessoal...

Pelo que estivendo na Europa existem algumas formas:

1) Por Obra = Seria durante um projeto e nao se tem beneficios qdo vc e demitido.
2) Laboral = Como um CLT do Brasil, ganha bonus, 13 salario, medico, etc etc
3) FreeLance = O tipico freelance brasileiro
4) Autonomo = O tipico PJ brasileiro

Qdo vc e laboral te pagam X euros ano brutos, ai te podem pagar em 12 pagas ou X pagas... Vc pode escolher em 12, isso ja incluiria o 13 salario embutido e bonus...

O maior problema e o visto se vc nao for europeu, pois te exigem a dupla cidanania muito...
Ainda mais q o indice de desemprego disparou no 1 mundo!

abrs, e vamos pra Europa conquistar!

Conforme havia dito, os métodos static podem ser utilizados quando não se quer forçar a criação de uma instância ou quando o programador não quer que exista instância (implementação do padrão singleton, por exemplo), pode ser utilizado para métodos que configuram atributos antes da instanciação da classe, ou para configurar atributos que serão utilizados por todas as instâncias da classe. Estes são alguns usos que já fiz do modificador static, mas os usos dele vão até o limite da sua imaginação


Hola davidtiagoconceicao,

Quando vc diz "forçar a criação de uma instância ou quando o programador não quer que exista instância", mesmo sendo static se cria uma instancia na memoria de uma classe, se esta nao for um Singleton.

O ponto que eu me cituo e porque dizem que um metodo static e mais rapido que um metodo normal.

abraços

davidtiagoconceicao wrote:Alguém me corrija se eu estiver errado, mas pelo que eu sei, o que estará ou não na memória depende da máquina virtual. O funcionamento mais comum é criar, para cada objeto, uma área para os atributos e outra área para os métodos. Ao instanciar um novo objeto, caso já exista um objeto daquele tipo na memória, será criada uma referência interna para o conjunto de métodos já existente. Ao ser invocada a execução de determinado método, é criado um frame (estrutura interna da JVM para controle da pilha) e este frame irá conter os dados (incluindo atributos) a serem utilizados pelo método. Caso o mesmo método seja invocado diversas vezes, vários frames serão empilhados, como se o método estivesse na pilha diversas vezes.
.


davidtiagoconceicao, gostei da sua explicaçao...
Porém neste modelo da VM nao vejo diferença entre um metodo static e nao static na area de memoria. ¿Como uma VM sabe que aquele metodo é static?

¿O que diferencia internamente numa VM algo ser static?

abraços
Hola...

Pelo que estive vendo na Europa rola uma faixa assim:

Portugal uns 45.000 euros brutos ao ano.
Espanha uns 60.000 euros brutos ao ano.
UK umas 80.000 libras brutas ao ano.

O jeito e abandonar o Brasil e ir pra outro pais ficar rico!

abrs
Hola,

Quando seto uma variavel membro como static, ela fica na memoria ate que a VM seja descarregada. Nao é?

Acredito que este mesmo comportamento se aplique igual a um metodo static, com isto nao teria um ganho na execuçao do metodo?
Pois todas as novas instancias aproveitariam o metodo ja carregado na memoria, de uma outra instancia utilizada.

Sempre soube que quando instanciava varias classes, aquele metodo static da classe era unico e se utilizava o mesmo espaço de memoria para todos.

Nao sei como a VM faria isso, tipo teria varias classes numa area da memoria que apontariam para outro trecho de memoria com aquele metodo compartilhado...

Se estou enganado, vc poderia me explicar melhor como seria este comportamento na memoria?


abrs
Hola pessoal,

Tenho uma duvida, sempre ouvi dizer que o modificador static compartilha o codigo com todas as instancia na memoria.

A duvida é:
Quando seto um static num metodo, o fato dele dizer que aquele metodo sera unico em todas as instancias daquela classe, farao que este metodo consuma menos memoria por ser unico e tenha uma execuçao mais rapida por ja estar carregado na memoria?

O que vcs acham desse static em metodos? Será bom mesmo sempre usar ele?

abraços
Obrigado pela ajuda Leonardo3001.

Vou tentar reformular melhor o site!

abrs

Ola....

Estou montando um site e tenho problemas com o controle de sessao num carrinho de compras, vou explicar o meu cenario:

1) Qdo faço o login, crio a sessao do usuario e atribuo varios objetos de controle nesta sessao.
2) Nas proximas paginas eu busco da sessao estes objetos, porem se essa sessao existe esta tudo OK.

Meu problema e:
Se a sessao do usuario expirou e vou utilizar o objeto q estaria, recebo um nullpointer. Para evitar isso, averiguo se o objeto retornado esta null, ai redireciono para um novo login. Mesmo se faço um request.getSession(true), vou ter uma nova sessao, porem sem meu objetos criados inicialmente.

Porém esta checagem teria q fazer em todas as paginas q vou utilizar a sessao. Existe alguma forma mais facil para evitar fazer tantas vezes essa checagems? Tipo criar um Filter que valide antes de permitir o request chegar no codigo que consulta os objetos da sessao...

O que vcs me sugerem?

Obrigado.

abrs
 
Índice dos Fóruns » Perfil de joaosiqueira » Mensagens enviadas por joaosiqueira
Ir para:   
Powered by JForum 2.1.8 © JForum Team