Analyse du mécanisme d'exécution du programme et des erreurs en Java
Cet article présente principalement le contenu pertinent de la machine virtuelle Java (JVM) ainsi que le mécanisme d'exécution et l'analyse des erreurs des programmes Java. Les amis qui en ont besoin peuvent en savoir plus.
JVM (Java Virtual Machine ) Une spécification pour les appareils informatiques qui peuvent être implémentés de différentes manières (logicielles ou matérielles). La compilation du jeu d’instructions pour une machine virtuelle est très similaire à la compilation du jeu d’instructions pour un microprocesseur. La machine virtuelle Java comprend un ensemble d'instructions de bytecode, un ensemble de registres, une pile, un tas de garbage collection et un champ de méthode de stockage.
La machine virtuelle Java (JVM) est un ordinateur imaginaire capable d'exécuter du code Java. Tant que l'interpréteur est porté sur un ordinateur spécifique conformément à la spécification JVM, tout code Java compilé peut être assuré de s'exécuter sur ce système.
1. Pourquoi utiliser la machine virtuelle Java
Une caractéristique très importante du langage Java est son indépendance par rapport à la plateforme. L'utilisation de la machine virtuelle Java est la clé pour réaliser cette fonctionnalité. Si un langage général de haut niveau souhaite fonctionner sur différentes plates-formes, il doit au moins être compilé en différents codes cibles. Après l'introduction de la machine virtuelle du langage Java, le langage Java n'a plus besoin d'être recompilé lorsqu'il est exécuté sur différentes plates-formes. Modèle d'utilisation du langage Java La machine virtuelle Java protège les informations liées à des plates-formes spécifiques, de sorte que le compilateur du langage Java n'a besoin que de générer le code cible (bytecode) qui s'exécute sur la machine virtuelle Java et peut s'exécuter sur plusieurs plates-formes sans modification. Lorsque la machine virtuelle Java exécute le bytecode, elle interprète le bytecode en instructions machine à exécuter sur la plate-forme spécifique.
Mécanisme d'exécution Java
L'exécution d'un programme Java doit passer par trois étapes : l'écriture, la compilation et l'exécution.
L'écriture fait référence à la saisie du code du programme dans l'environnement de développement Java, et enfin à la formation d'un fichier source Java avec le suffixe .java.
La compilation fait référence au processus d'utilisation du compilateur Java pour dépanner les fichiers sources. Après la compilation, un fichier de bytecode avec le suffixe .class sera généré. Ce n'est pas comme le langage C qui génère finalement un. document exécutable.
L'exécution fait référence à l'utilisation d'un interpréteur Java pour traduire un fichier de bytecode en code machine, l'exécuter et afficher les résultats
Un fichier de bytecode est une sorte de code machine qui est compatible avec n'importe quelle machine spécifique. Le code intermédiaire est indépendant de l'environnement et de l'environnement du système d'exploitation. Il s'agit d'un fichier binaire et d'un fichier de code objet généré après la compilation du fichier source Java par le compilateur Java. Ni les programmeurs ni les ordinateurs ne peuvent lire directement les fichiers de bytecode. Il doit être interprété et exécuté par un interpréteur Java dédié. Par conséquent, Java est un langage qui est interprété et exécuté sur la base d'une compilation.
L'interpréteur Java est chargé de traduire les fichiers de bytecode en code machine dans des environnements matériels et des plates-formes de système d'exploitation spécifiques pour l'exécution. Par conséquent, les programmes Java ne peuvent pas s'exécuter directement sur les plates-formes de système d'exploitation existantes. Ils doivent s'exécuter sur une plate-forme logicielle appelée machine virtuelle Java.
La machine virtuelle Java (JVM) est un environnement logiciel permettant d'exécuter des programmes Java, et l'interpréteur Java fait partie de la machine virtuelle Java. Lors de l'exécution d'un programme Java, la JVM sera d'abord démarrée, puis elle sera responsable de l'interprétation et de l'exécution du bytecode Java, et le bytecode Java ne peut s'exécuter que sur la JVM. De cette manière, la JVM peut être utilisée pour séparer le programme de bytecode Java de la plate-forme matérielle spécifique et de l'environnement du système d'exploitation. Tant que la JVM d'une plate-forme spécifique est installée sur différents ordinateurs, le programme Java peut s'exécuter sans tenir compte des spécificités actuelles. La plate-forme matérielle et l'environnement du système d'exploitation n'ont pas besoin de prendre en compte la plate-forme sur laquelle le fichier de bytecode a été généré. La JVM masque les différences spécifiques entre les différentes plates-formes logicielles et matérielles, réalisant ainsi une véritable transplantation multiplateforme au niveau du code binaire. JVM est la base indépendante de la plate-forme de Java. Les fonctionnalités multiplateformes de Java sont obtenues en exécutant des programmes Java dans la JVM.
L'approche « écrire une fois, exécuter n'importe où » du langage Java résout efficacement le besoin de la plupart des langages de programmation de haut niveau de cibler différents Le système compile et génère différents codes machine, c'est-à-dire le problème hétérogène de l'environnement matériel et de la plate-forme d'exploitation, ce qui réduit considérablement les frais généraux de développement, de maintenance et de gestion des programmes.
Il convient de noter que les programmes Java peuvent obtenir des fonctionnalités multiplateformes via JVM, mais JVM n'est pas multiplateforme. En d’autres termes, les JVM sur différents systèmes d’exploitation sont différentes. Les JVM sur les plates-formes Windows ne peuvent pas être utilisées sous Linux, et vice versa.
Analyse des erreurs de fonctionnement du programme JAVA
De manière générale, un projet à grande échelle qui a été mis en service peut rencontrer des problèmes dans les situations suivantes :
1. Utilisation anormale du processeur
1) Vérifiez l'utilisation du processeur, l'utilisation du processus cible, puis vérifiez l'utilisation de chaque cœur. Il peut aider à déterminer s'il s'agit d'un problème lié à un seul thread ou à un problème de pool de threads.
2) Parfois, après que le programme ait fonctionné normalement pendant un certain temps, le processeur monte soudainement verticalement, ce qui peut être lié au verrouillage du programme (si le verrouillage est maintenu pendant un certain temps). peu de temps, il vaut mieux essayer cas+yield Pour implémenter le spin lock)
3) Deadlock, exportez directement la pile d'appels pour trouver une solution au problème.
2. Mémoire anormale
1) Fuite de mémoire, rien à dire, dumper la pile pour trouver le problème
2) Des GC fréquents entraîneront également des performances insuffisantes. Si les GC se produisent fréquemment dans le programme, vous devez faire attention. Si l'augmentation de la taille de la nouvelle génération ne résout toujours pas le problème, vous devez en localiser un grand nombre. codes qui créent des objets temporaires (vous pouvez utiliser la technologie Object Pool pour éviter l'application répétée de mémoire)
3. Arrêt inattendu d'un thread de travail
4. IO anormales
Utiliser des outils pour analyser les défauts
Afficher le trafic réseau entrant et sortant Le trafic entre le serveur cible et le serveur cible peut aider à déterminer s'il est causé par une attaque
<.>
nécessite l'installation de gdb, qui est généralement utilisé pour vérifier les programmes c/c++, lorsque certaines erreurs au niveau de la machine virtuelle se produisent.
Résumé
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Guide du nombre parfait en Java. Nous discutons ici de la définition, comment vérifier le nombre parfait en Java ?, des exemples d'implémentation de code.

Guide de Weka en Java. Nous discutons ici de l'introduction, de la façon d'utiliser Weka Java, du type de plate-forme et des avantages avec des exemples.

Guide du nombre de Smith en Java. Nous discutons ici de la définition, comment vérifier le numéro Smith en Java ? exemple avec implémentation de code.

Dans cet article, nous avons conservé les questions d'entretien Java Spring les plus posées avec leurs réponses détaillées. Pour que vous puissiez réussir l'interview.

Java 8 présente l'API Stream, fournissant un moyen puissant et expressif de traiter les collections de données. Cependant, une question courante lors de l'utilisation du flux est: comment se casser ou revenir d'une opération FOREAK? Les boucles traditionnelles permettent une interruption ou un retour précoce, mais la méthode Foreach de Stream ne prend pas directement en charge cette méthode. Cet article expliquera les raisons et explorera des méthodes alternatives pour la mise en œuvre de terminaison prématurée dans les systèmes de traitement de flux. Lire plus approfondie: Améliorations de l'API Java Stream Comprendre le flux Forach La méthode foreach est une opération terminale qui effectue une opération sur chaque élément du flux. Son intention de conception est

Guide de TimeStamp to Date en Java. Ici, nous discutons également de l'introduction et de la façon de convertir l'horodatage en date en Java avec des exemples.

Les capsules sont des figures géométriques tridimensionnelles, composées d'un cylindre et d'un hémisphère aux deux extrémités. Le volume de la capsule peut être calculé en ajoutant le volume du cylindre et le volume de l'hémisphère aux deux extrémités. Ce tutoriel discutera de la façon de calculer le volume d'une capsule donnée en Java en utilisant différentes méthodes. Formule de volume de capsule La formule du volume de la capsule est la suivante: Volume de capsule = volume cylindrique volume de deux hémisphères volume dans, R: Le rayon de l'hémisphère. H: La hauteur du cylindre (à l'exclusion de l'hémisphère). Exemple 1 entrer Rayon = 5 unités Hauteur = 10 unités Sortir Volume = 1570,8 unités cubes expliquer Calculer le volume à l'aide de la formule: Volume = π × r2 × h (4

Spring Boot simplifie la création d'applications Java robustes, évolutives et prêtes à la production, révolutionnant le développement de Java. Son approche "Convention sur la configuration", inhérente à l'écosystème de ressort, minimise la configuration manuelle, allo
