[quote]Antes da referência ao objeto ser usada, este precisa ser alocado na memória o que é feito através de umcirc=new Circulo();. Se você tivesse declarado um objeto da classe String, já definida na linguagem, e depois fizesse sua alocação, o código seria semelhante ao seguinte:
String umastring;
umastring=new String(“Valor inicial”);
[/quote]
[color=“blue”] Isso quer dizer que ele vai ficar ocupando recursos da máquina? Ai eu fiquei na dúvida se tem alguma coisa haver, como quando alguem diz “o programa é pesado”. [/color]
[color=“blue”]Eu sei que a resposta deve ser sim, mas como to no começo acho que não custa tirar a dúvida. [/color]
Obviamente que vai usar recursos da sua máquina. Afinal, é para isso que ela serve . Toda vez que você faz um MeuObjeto obj = new Meu Objeto(); você aloca uma quantidade X de bytes da sua memória para poder acomodar seu objeto. Mas isso não acontece apenas com objeto, mas sim com todo tipo de dados, inclusive os tipos de dados primitivos, como int, double, float, boolean, byte, long, short, char (será que eu esqueci algum?). Mas, então, qual a diferença entre alocar memória para tipos primitivos e para objetos? A diferença é que a alocação de memória para tipos primitivos é feita sequencialmente, ou seja, o bloco de memória que uma certa variável primitiva vai ocupar é contínuo, enquanto a alocação de objetos não é necessariamente sequencial.
Valeu, deu pra tirar a dúvida, só que eu ainda me complico um pouco com esse esquema de Objetos, declarar bytes, char etc…etc.
Isso é normal no começo?
Se eu declaro um vetor e encho ele com uns 30 MBytes de informação, bastará eu dar um meuVetor = null; ou preciso chamar explicitamente o garbage collector?
O garbage collector vai estar sempre atento a esse tipo de liberacao de memoria, e chamar o System.gc() pode ajudar, as vezes. Ou seja, eh um comportamento completamente fora do controle do desenvolvedor. Nao tem destrutores, tambem - o mais proximo disso eh o metodo finalize(), mas o uso dele eh bem especifico (liberar recursos extremamente caros que possam ter sido alocados por uma classe e nao foram liberados pelo desenvolvedor, evitando uma catastrofe, por exemplo :))