Une variable d'instance d'un objet dans Java est-elle stockée sur la pile ou la zone de méthode de la JVM?
De plus, avons-nous une variable d'instance différente pour plusieurs threads?
Si elle est stockée dans la zone de méthode, en quoi la variable d'instance est-elle différente du stockage de variable statique?
Stack et heap sont les mémoires allouées par le système d'exploitation à la machine virtuelle Java qui s'exécute dans le système. Stack est une mémoire endroit où les méthodes et les variables locales sont stockées. (les références de variables sont soit primitive ou objet les références sont également stockées dans la pile). Heap est un emplacement mémoire où les objets et sa variable d'instance sont stockés.
Donc, pour résumer:
De plus, avons-nous une variable d'instance différente pour plusieurs threads?
Chaque thread aura un compteur de programme (PC) et une pile Java. PC utilisera la pile Java pour stocker les valeurs intermédiaires, la liaison dynamique, les valeurs de retour) pour les méthodes et les exceptions de répartition. Ceci est utilisé à la place des registres.
De plus, pour en savoir plus sur le thread, vous devriez vraiment lire cette rubrique Où est créé l'objet Thread? Stack or Heap? .
Si elle est stockée dans la zone de méthode, en quoi la variable d'instance est-elle différente du stockage de variable statique?
Comme vous pouvez le voir ci-dessus champs statiques sont stockés en tas. En revanche, variables locales sont stockées dans la pile.
//ÉDITER
Selon les commentaires de Bruno Reis et Peter Lawrey , vous devriez également lire à propos de Analyse d'évasion
Pour être précis,
Référence: Head First Java