2010-04-14 4 views

Répondre

3

Dépend de l'implémentation. En règle générale, vous ne devriez pas vous inquiéter de ces choses en Java. Le concept entier d'un "VM" est d'abstraire des choses telles que celle-ci. Maintenant, je suppose que les fonctions sont stockées quelque part près du bytecode, mais si votre machine virtuelle prend en charge JIT, ils pourraient être partout ....

Je suppose que nous pourrions dire « sur le tas » ... lol

Pour être honnête, je ne peux pas penser à une seule raison pour laquelle vous auriez besoin de le savoir, et de penser à ce que vous pourriez essayer de l'utiliser pour m'effrayer.

+0

Je pense que @husain souhaite connaître la différence entre les fonctions class/static et instance – Yaneeve

+1

Dans ce cas, ils sont stockés au même endroit. Les données contenues dans les fonctions peuvent être allouées différemment si elles sont statiques par rapport à la classe d'instance, mais les "fonctions" elles-mêmes, c'est-à-dire le code contenu dans les fonctions, ne seront pas copiées. –

3

La spécification JVM laisse entendre que cela fait partie du tas:

3.5.4 Méthode Area

La machine virtuelle Java a une zone de procédé qui est partagé entre tous les fils de la machine virtuelle Java . La zone de méthode est analogue à la zone de stockage pour le code compilé d'un langage conventionnel ou analogue au segment «text» dans un processus UNIX. Il stocke par classe structures telles que la piscine constant exécution , champ et données de procédé, et le code pour les méthodes et les constructeurs, y compris les méthodes spéciales (§3.9) utilisé dans la classe et initialisation d'instance et type d'interface initialisation La zone de méthode est créée au démarrage virtuel de la machine . Bien que la zone méthode est logiquement partie du tas, mises en œuvre simples peuvent choisir de ne pas à la collecte des ordures ou compact il. Cette version de la spécification de la machine virtuelle Java n'exige pas l'emplacement de la zone de méthode ou les règles utilisées pour gérer le code compilé. La zone de méthode peut être de taille fixe ou peut être étendue comme requis par le calcul et peut être contractée si une zone de méthode plus grande devient inutile. La mémoire de la zone n'a pas besoin d'être contiguë.

Référence: The JavaTM Virtual Machine Specification

Questions connexes