Ir para conteúdo
  • 0

[Resolvido] [Java] Dúvida


Pinke

Pergunta

Opa pessoal, blz?

 

Então... Estou com uma dúvida aqui, porém mas não sei explicar... em fim, vou tentar rs rs

 

Eu estou fazendo um outro plugin de SkyWars, e, eu criei uma Classe (Sala) onde irá armazenar os dados da partida. Aí é só eu dar "Sala s = New Sala" (Não lembro ao certo se é assim, estou no celular).

Aí todas as partidas eu salvo numa ArrayList<Sala>.

 

A dúvida é: Como faço para "excluir" essa sala, tipo... Se eu tirar a sala da ArrayList eu acho que continua salva no "cache" do java né?

Sei lá, posso estar falando merda, mas estou com esta dúvida.

É que estou pensando em duas maneiras de "reiniciar" a partida: Ou eu reseto todos os dados que tem na classe, ou, eu retiro classe da ArrayList e simplesmente crio outra.

 

Se alguém entendeu oq eu quis dizer... Responde aí kkkkk

 

Vlw!

Link para o comentário
Compartilhar em outros sites

11 respostass a esta questão

Posts Recomendados

Para limpar a ArrayList é ArrayList.clear(); estou pelo celular...

 

 

'-'

Sim, eu sei disto

Foi mal não expliquei direito rs rs

 

Então...

Como disse acima, fiz uma Classe chamada Sala. Nessa classe salva todos os dados de uma partida, no caso do SkyWars, salva: Os jogadores na partida, espectadores, os kits que os jogadores escolheram e etc....

 

Para cada placa de SkyWars, é uma sala diferente, "Sala s = new Sala()". Aí eu salvo todas as salas numa ArrayList.

 

Minha dúvida é: Se eu remover esta sala da ArrayList, ela continua salva em algum "cache" do java ou é excluída de vez mesmo

Sla kkkk

Não dá pra explicar

 

É que por exemplo... Tem 500 partidas por dia, cada partida eu crio uma sala nova e coloco na ArrayList, quando acabar a partida esta sala é removida da ArrayList.

Aí chega no final do dia, a memória tá em 100% de uso por causa do cache.

 

Ahhh sei lá cara, não sei explicar

 

Você conseguiu entender? Kkkkk

Foi mal :C

Link para o comentário
Compartilhar em outros sites

Oloco, está criando um SkyWars(Denovo) e não sabe tirar da array '-', zoa-

 

Sala sala = new Sala();//Cria a Sala

List<Sala> cache = new LinkedList<Sala>();//new ArrayList<Sala>(); ~ Cria a array list de cache como cistaste!

cache.add(sala);//Adiciona a sala na arraylist

cache.remove(sala);//Remove a sala da arraylist

 

Estou pelo celular, então ta de boa o/

 

@Edit

Eu lendo denovo acho que me buguei, não entendi muito bem sua dúvida :c, bugalzi

Editado por Kaway
Link para o comentário
Compartilhar em outros sites

Orientação a Objetos dá um nó na mente no inicio. Seu objeto Sala tem um endereço de memória (por ex: 0x0123) então, quando adiciona ele na lista é apenas uma referência a este endereço, se você alterar ele de qualquer lugar, ele será alterado também na ArrayList. Quando você remover ele da ArrayList, ele não "desaparece", pois pode estar sendo manipulado em algum outro lugar. Ele "desaparece" quando o Garbage Collector for desalocar a memória. No Java o gerenciamento de memória é automático.

 

No seu caso eu faria assim:

 

Cria um array Sala[] ou List<Sala> e em vez de ficar removendo e adicionando, apenas cria um metódo restart() onde redefine as variaveis e prepara o mapa de novo, etc.

Link para o comentário
Compartilhar em outros sites

A dúvida é: Como faço para "excluir" essa sala, tipo... Se eu tirar a sala da ArrayList eu acho que continua salva no "cache" do java né?

cache velho? wtf, isso é java não um navegador

 

pra remover algo de uma arraylist é só usar ArrayList.remove(sala);

Link para o comentário
Compartilhar em outros sites

cache velho? wtf, isso é java não um navegador

 

pra remover algo de uma arraylist é só usar ArrayList.remove(sala);

Ele quis dizer, que quando você cria uma arraylist, armazena memória.

Ele quer remover um valor, e remover essa memoria gasta.

Link para o comentário
Compartilhar em outros sites

Ele quis dizer, que quando você cria uma arraylist, armazena memória.

Ele quer remover um valor, e remover essa memoria gasta.

Mesmo sem colocar na arraylist vai adicionar na memoria

 

caso queira "deletar" um objeto da memoria é só usar:

 

/* Cria um novo objeto */
Sala sala = new Sala();
/* "Deleta" o objeto */
sala = null;
Editado por Proyx
Link para o comentário
Compartilhar em outros sites

 

Mesmo sem colocar na arraylist vai adicionar na memoria

 

caso queira "deletar" um objeto da memoria é só usar:

/* Cria um novo objeto */
Sala sala = new Sala();
/* "Deleta" o objeto */
sala = null;

Não, isso não deleta o objeto da memoria, ele só vai ser deletado quando o gc deletar ele '-'

O gerenciamento de memoria no java é feito pela jvm, diferente do C, que da pra tu alocar e desalocar pedaços da memoria.

'-'

Sim, eu sei disto

Foi mal não expliquei direito rs rs

 

Então...

Como disse acima, fiz uma Classe chamada Sala. Nessa classe salva todos os dados de uma partida, no caso do SkyWars, salva: Os jogadores na partida, espectadores, os kits que os jogadores escolheram e etc....

 

Para cada placa de SkyWars, é uma sala diferente, "Sala s = new Sala()". Aí eu salvo todas as salas numa ArrayList.

 

Minha dúvida é: Se eu remover esta sala da ArrayList, ela continua salva em algum "cache" do java ou é excluída de vez mesmo

Sla kkkk

Não dá pra explicar

 

É que por exemplo... Tem 500 partidas por dia, cada partida eu crio uma sala nova e coloco na ArrayList, quando acabar a partida esta sala é removida da ArrayList.

Aí chega no final do dia, a memória tá em 100% de uso por causa do cache.

 

Ahhh sei lá cara, não sei explicar

 

Você conseguiu entender? Kkkkk

Foi mal :C

O coletor de lixo vai coletar isso, mas não pode estar sendo usada.

 

Se tu tiver na dúvida sobre oq ta consumindo memoria usa uns profilers, não lembro de nenhum agora, se não me engano já vem um no java, se não procura no google "java profilers"

Link para o comentário
Compartilhar em outros sites

'-'

Sim, eu sei disto

Foi mal não expliquei direito rs rs

 

Então...

Como disse acima, fiz uma Classe chamada Sala. Nessa classe salva todos os dados de uma partida, no caso do SkyWars, salva: Os jogadores na partida, espectadores, os kits que os jogadores escolheram e etc....

 

Para cada placa de SkyWars, é uma sala diferente, "Sala s = new Sala()". Aí eu salvo todas as salas numa ArrayList.

 

Minha dúvida é: Se eu remover esta sala da ArrayList, ela continua salva em algum "cache" do java ou é excluída de vez mesmo

Sla kkkk

Não dá pra explicar

 

É que por exemplo... Tem 500 partidas por dia, cada partida eu crio uma sala nova e coloco na ArrayList, quando acabar a partida esta sala é removida da ArrayList.

Aí chega no final do dia, a memória tá em 100% de uso por causa do cache.

 

Ahhh sei lá cara, não sei explicar

 

Você conseguiu entender? Kkkkk

Foi mal :C

E teu servidor tem 500 salas? se não pra que ficar criando uma nova instancia de Sala toda vez? Da pra tu ter um objeto pra cada sala, que tenha métodos tipo "reiniciar", "iniciar".

 

Quando o jogo acabar tu reinicia a sala e tals

Link para o comentário
Compartilhar em outros sites


E teu servidor tem 500 salas? se não pra que ficar criando uma nova instancia de Sala toda vez? Da pra tu ter um objeto pra cada sala, que tenha métodos tipo "reiniciar", "iniciar".
 
Quando o jogo acabar tu reinicia a sala e tals
 
Não tem 500 salas, mas, é um exemplo de como ficaria no final do dia se eu ficasse criando salas novas para cada partida que reiniciava haha

 

 

Não, isso não deleta o objeto da memoria, ele só vai ser deletado quando o gc deletar ele '-'
O gerenciamento de memoria no java é feito pela jvm, diferente do C, que da pra tu alocar e desalocar pedaços da memoria.

O coletor de lixo vai coletar isso, mas não pode estar sendo usada.
 
Se tu tiver na dúvida sobre oq ta consumindo memoria usa uns profilers, não lembro de nenhum agora, se não me engano já vem um no java, se não procura no google "java profilers"

 
Obrigado, irei pesquisar isto
Eu nem sabia que o java tinha um coletor de lixo kkkkkkk
Vlw
 
 

Orientação a Objetos dá um nó na mente no inicio. Seu objeto Sala tem um endereço de memória (por ex: 0x0123) então, quando adiciona ele na lista é apenas uma referência a este endereço, se você alterar ele de qualquer lugar, ele será alterado também na ArrayList. Quando você remover ele da ArrayList, ele não "desaparece", pois pode estar sendo manipulado em algum outro lugar. Ele "desaparece" quando o Garbage Collector for desalocar a memória. No Java o gerenciamento de memória é automático.
 
No seu caso eu faria assim:
 
Cria um array Sala[] ou List<Sala> e em vez de ficar removendo e adicionando, apenas cria um metódo restart() onde redefine as variaveis e prepara o mapa de novo, etc.

"Quando você remover ele da ArrayList, ele não "desaparece"" Meio que era essa minha dúvida kkk
É que eu estava com preguiça de fazer um método para resetar as variáveis, então fiz esta pergunta aqui no fórum. Mais ou menos isto que eu quis saber: Se eu só tirar da ArrayList, o objeto será excluido permanentemente mesmo ou irá ficar armazenado mesmo num cache
 
 
 
 
Ta ta ta ta, em fim galera
Obrigado por todos que responderam rs rs rs
Podem fechar o tópico
Acho que consigo acabar hoje o plugin, aí eu já divulgo no fórum o servidor hehehe :D

Editado por Pinke
Link para o comentário
Compartilhar em outros sites

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