Le code Java est compilé et exécuté dans la JVM, alors quels sont les avantages de cette façon de fonctionner ?
Contrairement au langage C/C++, qui peut être compilé directement pour générer un format de code que le CPU peut comprendre, communément appelé code machine, Java compile le code en mots exécutable par le code de la section de la machine virtuelle. La machine virtuelle Java peut être implémentée par matériel ou par logiciel selon différentes plateformes (Windows, Linux, Mac, etc.). L'avantage est qu'une fois le code Java compilé en bytecode, il peut s'exécuter sur différentes plates-formes de machines virtuelles. C'est ce que l'on dit souvent « compiler une fois, exécuter n'importe où ». De plus, la machine virtuelle fournit également une détection dynamique telle que l'environnement d'hébergement, les limites du tableau, le type dynamique, les autorisations de sécurité, etc., nous permettant d'accorder plus d'attention au développement de la logique métier.
Machine virtuelle Java
Du point de vue de la machine virtuelle, l'exécution du code Java nécessite d'abord de charger le fichier de classe compilé dans la machine virtuelle Java. La classe Java chargée sera stockée dans la zone méthode. La machine virtuelle Java divise la zone de mémoire d'exécution en cinq parties, à savoir la zone de méthodes, le tas, le registre PC, la pile de méthodes Java et la pile de méthodes locale.
Processus Java en cours d'exécution
Pendant le processus en cours d'exécution, chaque fois qu'une méthode Java est appelée, la machine virtuelle Java génère un cadre de pile dans la pile de méthodes Java du thread actuel . Swimsuit contient des variables locales et des opérandes de bytecode. La taille de cette trame est calculée à l'avance et la machine virtuelle Java ne nécessite pas que la pile mémoire soit contiguë. Lors de la sortie d'une méthode, qu'elle revienne normalement ou anormalement, la machine virtuelle Java affichera la trame actuelle et la supprimera. D'un point de vue matériel, le bytecode Java ne peut pas être exécuté directement, la machine virtuelle Java doit donc traduire le bytecode en code machine que le processeur peut reconnaître.
Il existe deux situations dans le processus de traduction ci-dessus : la première est l'interprétation et l'exécution, c'est-à-dire la traduction du bytecode en code machine un par un et son exécution ; la seconde est la compilation juste à temps (JIT) ; en convertit un. Tous les bytecodes de la méthode sont traduits en code machine avant exécution.
L'avantage du premier est qu'il n'est pas nécessaire d'attendre la compilation, et l'avantage du second est qu'il s'exécute en fait plus rapidement. Afin d'obtenir une vitesse d'exécution plus rapide, les machines virtuelles Java adoptent généralement deux méthodes, à savoir le mode mixte, qui combine les avantages des deux. La technologie de compilation juste à temps est basée sur la théorie de la règle 80-20, c'est-à-dire que 20 % du code occupe 80 % des ressources informatiques. L'interprétation est utilisée pour la plupart des codes peu courants, et la compilation juste à temps est utilisée pour un petit nombre de codes couramment utilisés, qui ont atteint une vitesse d'exécution raisonnable.
Lorsque les ressources informatiques sont suffisantes, interprétation du bytecode, exécution, compilation à la volée et exécution simultanée. Une fois la compilation terminée, l'exécution de l'interprétation peut être remplacée la prochaine fois et le code machine peut être exécuté directement. En général, l'efficacité d'exécution du code Java a beaucoup à voir avec la configuration et le mode de fonctionnement de la machine virtuelle. L'optimisation de la machine virtuelle Java peut améliorer efficacement l'efficacité d'exécution du code.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!