Sempre leio em livros sobre java e memoria RAM, que “devemos” nos preocupar em nao carregar o programa com variaveis de instancias desnecessarias, e que o garbage collector sempre limpa para nao pesar o programa.
O que me deixa com duvida eh o seguinte: a JVM nao utiliza a mesma memoria RAM do pc? Ou ela utiliza apenas parte dessa memoria?
Sobre java e memoria
7 Respostas
A JVM usa a quantidade de memória RAM que foi alocada no começo do programa com as opções -Xms e -Xmx .
Nem sabia que tinha essa opcao…rsrsrs
Mas como quase tudo em java, se você não configurar isso, tem os valores default.
Aproveitando o gancho:
fazer isso aqui:
import javax.swing.*;
consome mais memória, ou piora o desempenho da aplicação, do que colocar todos os imports realmente necessários para aquela classe?
Já postei um tópico a respeito, mas fiquei com dúvidas.
Obrigado.
ao importar usando o *, vc importa todas as classes da biblioteca, mesmo as que não vai usar, creio que quando vc coloca na mala roupas que não vai usar na viagem, elas pesam sem necessidade.
Aproveitando o gancho:fazer isso aqui:
import javax.swing.*;
consome mais memória, ou piora o desempenho da aplicação, do que colocar todos os imports realmente necessários para aquela classe?
Já postei um tópico a respeito, mas fiquei com dúvidas.
Obrigado.
Não faz diferença nenhuma. Isso serve para dizer ao compilador onde buscar os nomes das classes que aparecem no arquivo. Em tempo de execução, uma classe só é carregada para a memória quando uma instância, um membro estático é referenciado ou quando Class.forName é usado.
A única desvantagem em usar o asterico é o conflito de classes de pacotes diferentes mas que tem o mesmo nome. De qualquer maneira, IDEs como o Eclipse ou Netbeans organizam os imports automaticamente para você.
Aproveitando o gancho:fazer isso aqui:
import javax.swing.*;
consome mais memória, ou piora o desempenho da aplicação, do que colocar todos os imports realmente necessários para aquela classe?
Já postei um tópico a respeito, mas fiquei com dúvidas.
Obrigado.
Não faz absolutamente nenhuma diferença. Nenhuma, nenhuma, nenhuma.
Olhando o .class gerado nos dois casos, ele referencia apenas e tão somente as classes usadas, tanto no caso “import java.util.*” quanto no caso “import java.util.List; import java.util.ArrayList; … etc.”
Os .class so são ligeiramente diferentes porque o tamanho do programa-fonte é diferente, portanto as mesmas linhas vão estar em posição diferente e a informação de debug vai dizer, em um caso, que o método “main” começou na linha 500 e no outro caso, que o “main” começou na 530 (por exemplo).