Ir para conteúdo
  • 0

[Dúvida] Métodos em 'static' causam lag?


iKileey

Pergunta

Bom, minha dúvida é se realmente utilizar métodos em 'static' causa lag, eu acho que na teoria era pra dar um certo lag, mas


não sei ao certo, enfim causa ou não lag? (Se sim, por favor justifique o motivo).


 


Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

Vamos dar um exemplo.

 

Eu tenho uma casa e nesta casa eu tenho uma geladeira,e você precisa entrar toda hora na casa para abrir a geladeira,só que eu deixo a casa e geladeira fechada.Oque vale mais a pena:

 * Abrir toda hora a casa,abrir toda hora a geladeira,pegar o que precisa,fecha geladeira,fecha casa.

 * Abrir uma vez a casa,abrir uma vez a geladeira,pegar oque precisa e sair.

 

Oque econômia mais tempo ? Pensa na seguinte forma no static.

Link para o comentário
Compartilhar em outros sites

Não.
 
Você pode (ou deve) usar static pra métodos "uteis", funções puras etc...
 
Exemplo de quando usar static:
 
Você tem um método utilitário que "capitaliza" a primeira de uma String, nesse caso seria melhor você usar um método estático,
senão você teria que criar uma instancia (ou usar singleton) da classe toda vez que fosse utilizar esse método e isso consumiria ram.

 

Usando static:

public class StringUtil {
  public static String capitalizar(String texto) {
     // lógica aqui
  }
}

Ai você usaria assim: 

String stringCapitalizada = StringUtil.capitalizar("uma string aqui");

Se não o método não fosse estático você teria que fazer isso: 

StringUtil stringUtil = new StringUtil();
String stringCapitalizada = stringUtil.capitalizar("uma string aqui");

Como disse acima, você teria que criar uma instancia cada vez que fosse utilizar esse método, assim gastando recursos desnecessariamente.

 
Exemplo de quando não usar.

// Representa uma pessoa
class Pessoa {
  private String nome;

  public Pessoa(String nome) {
     this.nome = nome;
  }

  public void apresentar() {
    System.out.println("Olá, meu nome é " + nome);
  }
}

Pessoa joao = new Pessoa("joao");
joao.apresentar();// Olá, meu nome é joao

Pessoa maria = new Pessoa("maria");
maria.apresentar();// Olá, meu nome é maria

 
Espero ter ajudado, não sou muito bom com explicação.

Link para o comentário
Compartilhar em outros sites

Não muda nada usar static ou não.

 

O único jeito que pode acontecer um memory leak com static (em servidores de Minecraft) é se você guardar a instância do seu plugin em uma variável e ficar dando reload no servidor, aí dá um memory leak.

 

Mas você também não deve abusar static em todo lugar, eu fazia isto antes e... bem, o código-fonte fica muito bagunçado já que Java é OOP.

 

Como o leonardosc disse...

 

Não.
 
Você pode (ou deve) usar static pra métodos "uteis", funções puras etc...
 
Exemplo de quando usar static:
 
Você tem um método utilitário que "capitaliza" a primeira de uma String, nesse caso seria melhor você usar um método estático,
senão você teria que criar uma instancia (ou usar singleton) da classe toda vez que fosse utilizar esse método e isso consumiria ram.

 

Usando static:

public class StringUtil {
  public static String capitalizar(String texto) {
     // lógica aqui
  }
}

Ai você usaria assim: 

String stringCapitalizada = StringUtil.capitalizar("uma string aqui");

Se não o método não fosse estático você teria que fazer isso: 

StringUtil stringUtil = new StringUtil();
String stringCapitalizada = stringUtil.capitalizar("uma string aqui");

Como disse acima, você teria que criar uma instancia cada vez que fosse utilizar esse método, assim gastando recursos desnecessariamente.

 
Exemplo de quando não usar.

// Representa uma pessoa
class Pessoa {
  private String nome;

  public Pessoa(String nome) {
     this.nome = nome;
  }

  public void apresentar() {
    System.out.println("Olá, meu nome é " + nome);
  }
}

Pessoa joao = new Pessoa("joao");
joao.apresentar();// Olá, meu nome é joao

Pessoa maria = new Pessoa("maria");
maria.apresentar();// Olá, meu nome é maria

 
Espero ter ajudado, não sou muito bom com explicação.

Um exemplo prático em servidores de Minecraft é deixar a API do seu plugin em uma classe estática, para que outros developers não precisem fazer complexidades para conseguir acessar a sua API.

Link para o comentário
Compartilhar em outros sites

Não.

 

Você pode (ou deve) usar static pra métodos "uteis", funções puras etc...

 

Exemplo de quando usar static:

 

Você tem um método utilitário que "capitaliza" a primeira de uma String, nesse caso seria melhor você usar um método estático,

senão você teria que criar uma instancia (ou usar singleton) da classe toda vez que fosse utilizar esse método e isso consumiria ram.

 

Usando static:

public class StringUtil {
  public static String capitalizar(String texto) {
     // lógica aqui
  }
}

Ai você usaria assim: 

String stringCapitalizada = StringUtil.capitalizar("uma string aqui");

Se não o método não fosse estático você teria que fazer isso: 

StringUtil stringUtil = new StringUtil();
String stringCapitalizada = stringUtil.capitalizar("uma string aqui");

Como disse acima, você teria que criar uma instancia cada vez que fosse utilizar esse método, assim gastando recursos desnecessariamente.

 

 

Exemplo de quando não usar.

// Representa uma pessoa
class Pessoa {
  private String nome;

  public Pessoa(String nome) {
     this.nome = nome;
  }

  public void apresentar() {
    System.out.println("Olá, meu nome é " + nome);
  }
}

Pessoa joao = new Pessoa("joao");
joao.apresentar();// Olá, meu nome é joao

Pessoa maria = new Pessoa("maria");
maria.apresentar();// Olá, meu nome é maria

 

Espero ter ajudado, não sou muito bom com explicação.

 

Não muda nada usar static ou não.

 

O único jeito que pode acontecer um memory leak com static (em servidores de Minecraft) é se você guardar a instância do seu plugin em uma variável e ficar dando reload no servidor, aí dá um memory leak.

 

Mas você também não deve abusar static em todo lugar, eu fazia isto antes e... bem, o código-fonte fica muito bagunçado já que Java é OOP.

 

Como o leonardosc disse...

 

Um exemplo prático em servidores de Minecraft é deixar a API do seu plugin em uma classe estática, para que outros developers não precisem fazer complexidades para conseguir acessar a sua API.

 

 

Obrigado, estava com um pulga atrás da orelha pensando nisso  :bigsmile:

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...