2010-02-08 6 views
0

Explique l'allocation de mémoire en Java pour un programme écrit.Allocation de mémoire en Java

+2

Vous devrez être plus précis que cela. –

+1

Vous devez être un peu plus explicite. Quel aspect de l'allocation de mémoire voulez-vous savoir? – Andrew

Répondre

6

En général, la mémoire est allouée sur Java "heap" en tant que résultat automatique des objets créés. C'est automatiquement géré. Une fois qu'un objet n'est plus référencé, le garbage collector retourne éventuellement la mémoire qu'il a déjà occupée dans le pool disponible. Plus d'informations sont disponibles sur le site java.sun.com, tel que dans ce overview of memory management. Spécifiquement en ce qui concerne la mise en œuvre JVM de Sun, HotSpot, il y a un PDF on it. Ceci est en contraste avec les langages (tels que C) où le programmeur contrôle directement l'allocation et la libération. En Java, vous laissez juste heureusement il à l'environnement:

void doSomething() { 
    NiftyObject joe; 

    joe = new NiftyObject(); // Allocation 

    // ...use joe for something... 

    // Done; no "free" call (or similar) required 
} 

Lorsque joe est hors de portée (la fonction retourne, je suppose ici la fonction ne retourne pas joe ou le stocker quelque part), joepeut être collectées par le garbage collector. Lorsque cela se produit , dépend entièrement de l'implémentation et de l'environnement.

+1

Juste pour ajouter, il y a un bon article sur le garbage collector ici: http://www.javaworld.com/javaworld/jw-08-1996/jw-08-gc.html –

+0

Merci Stephen. En dépit d'être très vieux (1996), les concepts et tels sont toujours valables. S'il entre dans les détails (et il dit qu'il ne le fera pas sur la première page), ils devraient être pris avec un peu de grain de sel sur la supposition que les choses ont évolué. Mais d'écrémer le début, regarde bien. –