2016-04-27 1 views

Répondre

0

Les objets sont alloués dans le tas. Cependant, les lectures et écritures de mémoire seront bien sûr mises en cache dans le processeur. Différentes JVM feront des choses différentes, mais la plupart auront un tampon d'allocation local de threads, ce qui signifie que différents threads alloueront des objets dans des partitions différentes; le ramasse-miettes les recycle ensuite et (si l'objet est encore en vie) les déplace vers une autre zone de la mémoire du tas au fur et à mesure des besoins.

+0

@AIBlue: Merci pour votre réponse. Donc si je fais 'int [] u = new int [1]; u [0] = 0; 'ce qui suit arriverait: u est assigné sur le tas, une ligne de cache est déplacée sur le processeur, 0 est écrit dans' u [0] 'dans le cache, puis le résultat est écrit sur le main Mémoire. Si cela était vrai, je devrais éviter de faire de petits objets. – gcc

+0

Éviter les petits objets en faisant peu est généralement une bonne idée, dans n'importe quel langage de programmation. – AlBlue