Je voudrais savoir si un objet Java est nécessairement alloué en mémoire principale ou si la JVM peut aussi allouer un objet dans le cache du processeur?Où la JVM alloue-t-elle les objets
0
A
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.
@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
Éviter les petits objets en faisant peu est généralement une bonne idée, dans n'importe quel langage de programmation. – AlBlue