{"product_id":"110255","title":"Comment bien lire Java ","description":"\u003ccenter\u003e\u003cdiv style=\"text-align:center\"\u003e\u003cimg src=\"https:\/\/tmgdisk01.cafe24.com\/images\/vs\/4172\/sv\/3jYEEOLkh6GjmDhHKMEF3LC7sReJKx.png?v=1765097993\" style=\"max-width:100%;max-height:10px\"\u003e\u003c\/div\u003e\u003c\/center\u003e\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\u003ccenter\u003e\n\n\u003cdiv style=\"width:95%\"\u003e\n\n\u003cdiv style=\"text-align:center;font-size:30px;font-weight:bolder;line-height:1.6em\"\u003e Comment bien lire Java \u003c\/div\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003cdiv style=\"border-bottom:1px;border-bottom-style:dotted;border-color:;padding-bottom:20px\"\u003e\u003ccenter\u003e\u003ctable align=\"center\" width=\"100%\"\u003e\u003ctbody style=\"border:0px\"\u003e\n\n\u003ctr\u003e\u003ctd align=\"center\" style=\"line-height:1.2em;text-align:center;font-size:18px;color:black;font-weight:bold;padding-bottom:20px;\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\n\n\u003ctr\u003e\u003ctd style=\"text-align:center\"\u003e\u003cimg src=\"https:\/\/image.yes24.com\/goods\/126016473\/XL\" style=\"max-width:100%;height:auto\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\n\n\n\u003c\/tbody\u003e\u003c\/table\u003e\u003c\/center\u003e\u003c\/div\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003cdiv style=\"width:95%;{split_style6}padding-top:20px;padding-bottom:20px\"\u003e\n\n\u003cdiv style=\"text-align:left;font-size:16px;font-weight:bold;padding-bottom:20px\"\u003e Description \u003c\/div\u003e\n\n\u003cdiv style=\"text-align:left;word-break:break-all;font-size:14px;line-height:1.6em;\"\u003e\n\n\u003cdiv\u003e\u003ch5\u003e \u003cb\u003eIntroduction au livre\u003c\/b\u003e\n\u003c\/h5\u003e\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e\u003cdiv\u003e \u003cb\u003eTechniques de profilage, de débogage et de journalisation pour identifier les bogues et les problèmes de performance Java.\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e En pratique, les développeurs passent la majeure partie de leur temps à lire et à comprendre le code existant.\u003cbr\u003e Ce livre présente des techniques pratiques qui permettront de réduire le temps nécessaire à la compréhension d'un code Java inconnu. \u003cbr\u003eEn effectuant des profils et des débogages, et en comprenant finalement comment vos applications JVM fonctionnent réellement, vous pouvez trouver les causes profondes des dépendances ou des plantages et interpréter les résultats inattendus.\u003cbr\u003e Des bases du débogage aux méthodes avancées de détection des problèmes dans les architectures de microservices, ce livre vous apprend à « lire » le code Java grâce à des illustrations informelles et des exemples concrets et attrayants.\u003cbr\u003e\n\u003c\/div\u003e\u003c\/div\u003e\n\u003cdiv\u003e\u003cul\u003e\u003cli\u003e Vous pouvez consulter un aperçu du contenu du livre.\u003cbr\u003e \u003cspan\u003eAperçu\u003c\/span\u003e\n\n\u003c\/li\u003e\u003c\/ul\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cbr\u003e\u003cdiv\u003e\u003ch5\u003e \u003cb\u003eindice\u003c\/b\u003e\n\u003c\/h5\u003e\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e Préface du traducteur x\u003cbr\u003e Avis du lecteur bêta xi\u003cbr\u003e Début xiv\u003cbr\u003e Remerciements xvi\u003cbr\u003e À propos de ce livre xviii\u003cbr\u003e À propos de la couverture xxi\u003cbr\u003e\u003cbr\u003e \u003cb\u003ePARTIE I : Techniques de dépannage de base\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e \u003cb\u003eCHAPITRE 1 Clarification des parties ambiguës de l'application 3\u003c\/b\u003e\u003cbr\u003e 1.1 Comment mieux comprendre l'application 4\u003cbr\u003e 1.2 Scénarios courants d'enquête sur le code 8\u003cbr\u003e __1.2.1 Identifier la cause d'une sortie inattendue 9\u003cbr\u003e 1.2.2 Acquérir des compétences spécifiques 14 \u003cbr\u003e1.2.3 Déterminez pourquoi la vitesse diminue.\u003cbr\u003e __1.2.4 Comprendre pourquoi les applications plantent 16\u003cbr\u003e 1.3 Ce que vous apprendrez dans ce livre 19\u003cbr\u003e Résumé 20\u003cbr\u003e\u003cbr\u003e \u003cb\u003eCHAPITRE 2 Comprendre la logique des applications grâce aux techniques de débogage 21\u003c\/b\u003e\u003cbr\u003e 2.1 Quand l'analyse de code seule est insuffisante 23\u003cbr\u003e 2.2 Examen du code à l'aide d'un débogueur 26\u003cbr\u003e __2.2.1 Qu'est-ce qu'une trace de pile d'exécution et comment dois-je l'utiliser ? 31\u003cbr\u003e __2.2.2 Navigation dans le code avec le débogueur 36\u003cbr\u003e 2.3 Si le débogueur ne suffit pas, essayez 43\u003cbr\u003e Résumé 45\u003cbr\u003e\u003cbr\u003e \u003cb\u003eCHAPITRE 3 Trouver la cause première des problèmes grâce à des techniques de débogage avancées 47\u003c\/b\u003e\u003cbr\u003e 3.1 Minimisation du temps d'investigation grâce aux points d'arrêt conditionnels 48\u003cbr\u003e 3.2 Comment utiliser les points d'arrêt sans interrompre l'exécution 52\u003cbr\u003e 3.3 Modification dynamique du scénario d'enquête 55\u003cbr\u003e 3.4 Retour sur l'enquête, dossier 58\u003cbr\u003e Résumé 64\u003cbr\u003e\u003cbr\u003e \u003cb\u003eCHAPITRE 4 : Débogage des applications distantes 65\u003c\/b\u003e\u003cbr\u003e 4.1 Qu'est-ce que le débogage à distance ? 66\u003cbr\u003e 4.2 Enquêter dans un environnement isolé 69\u003cbr\u003e __4.2.1 Scénario 70\u003cbr\u003e 4.2.2 Investigation des problèmes en environnement distant 71\u003cbr\u003e Résumé 81\u003cbr\u003e \u003cbr\u003e\u003cb\u003eCHAPITRE 5 Surveillance du comportement des applications à l'aide des journaux 83\u003c\/b\u003e\u003cbr\u003e 5.1 Enquête à l'aide des journaux 87\u003cbr\u003e 5.1.1 Identification des exceptions enregistrées dans les journaux 88\u003cbr\u003e __5.1.2 Identification de l'emplacement d'appel d'une méthode avec une trace de pile d'exceptions 89\u003cbr\u003e __5.1.3 Mesure du temps d'exécution des commandes dans une architecture multithread 91\u003cbr\u003e 5.1.4 Analyse des problèmes d'exécution des commandes dans les architectures multithread 92\u003cbr\u003e 5.2 Comment implémenter la journalisation 94\u003cbr\u003e __5.2.1 Enregistrement des messages de journalisation 94\u003cbr\u003e 5.2.2 Comment définir les niveaux de journalisation et utiliser le framework de journalisation 95\u003cbr\u003e 5.2.3 Problèmes et précautions liés à l'exploitation forestière 102\u003cbr\u003e 5.3 Journaux et débogage à distance 107\u003cbr\u003e Résumé 108\u003cbr\u003e\u003cbr\u003e \u003cb\u003ePARTIE II Techniques de dépannage avancées\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e \u003cb\u003eCHAPITRE 6 Identification des problèmes d'utilisation des ressources grâce aux techniques de profilage 111\u003c\/b\u003e\u003cbr\u003e 6.1 Quand un profileur est-il utile ? 112\u003cbr\u003e 6.1.1 Identification d'une utilisation anormale des ressources 112\u003cbr\u003e 6.1.2 Recherche du code en cours d'exécution 113\u003cbr\u003e 6.1.3 Identification de la cause de la lenteur du lancement de l'application 114 \u003cbr\u003e6.2 Comment utiliser le Profiler 114\u003cbr\u003e 6.2.1 Installation et configuration de VisualVM 115\u003cbr\u003e 6.2.2 Observation de l'utilisation du processeur et de la mémoire 117\u003cbr\u003e 6.2.3 Identification des fuites de mémoire 127\u003cbr\u003e Résumé 132\u003cbr\u003e\u003cbr\u003e \u003cb\u003eCHAPITRE 7 : Détection des problèmes cachés grâce aux techniques de profilage 133\u003c\/b\u003e\u003cbr\u003e 7.1 Observation du code exécuté avec l'échantillonnage 134\u003cbr\u003e 7.2 Détermination du nombre d'exécutions d'une méthode par profilage 142\u003cbr\u003e 7.3 Utilisation du profileur pour déterminer les requêtes SQL réellement exécutées par votre application 144\u003cbr\u003e 7.3.1 Identification des requêtes SQL non générées par le framework avec le Profiler 144\u003cbr\u003e __7.3.2 Identification des requêtes SQL générées par le framework à l'aide d'un profileur 150\u003cbr\u003e 7.3.3 Identification des requêtes SQL générées par des programmes avec un profileur 153\u003cbr\u003e Résumé 157\u003cbr\u003e\u003cbr\u003e \u003cb\u003eCHAPITRE 8 Application d'outils de visualisation avancés aux données profilées 159\u003c\/b\u003e\u003cbr\u003e 8.1 Détection des problèmes de connexion JDBC 160\u003cbr\u003e 8.2 Comprendre la conception du code de l'application en examinant le graphe d'appels 173\u003cbr\u003e 8.3 Création de graphiques en flammes pour identifier les problèmes de performance 175\u003cbr\u003e 8.4 Analyse des requêtes dans les bases de données NoSQL 179\u003cbr\u003e Résumé 180\u003cbr\u003e \u003cbr\u003e\u003cb\u003eCHAPITRE 9 Étude des problèmes de verrouillage dans les architectures multithread 183\u003c\/b\u003e\u003cbr\u003e 9.1 Surveillance du blocage de filetage 184\u003cbr\u003e 9.2 Analyse du frein-filet 189\u003cbr\u003e 9.3 Analyse des threads en attente 198\u003cbr\u003e Résumé 205\u003cbr\u003e\u003cbr\u003e \u003cb\u003eCHAPITRE 10 : Investigation des problèmes de blocage à l’aide des vidages de threads 207\u003c\/b\u003e\u003cbr\u003e 10.1 Collecte des vidages de threads 208\u003cbr\u003e __10.1.1 Collecte des vidages de threads avec Profiler 210\u003cbr\u003e __10.1.2 Collecte des vidages de threads depuis la ligne de commande 212\u003cbr\u003e 10.2 Comment lire un vidage de thread 215\u003cbr\u003e __10.2.1 Vidage de thread en texte brut 216\u003cbr\u003e __10.2.2 Lecture des vidages de threads à l'aide d'outils 222\u003cbr\u003e Résumé 225\u003cbr\u003e\u003cbr\u003e \u003cb\u003eCHAPITRE 11 Détection des problèmes de mémoire lors de l'exécution d'une application 227\u003c\/b\u003e\u003cbr\u003e 11.1 Diagnostic des problèmes de mémoire par échantillonnage et profilage 228\u003cbr\u003e 11.2 Collecte des vidages de tas pour détecter les fuites de mémoire 235\u003cbr\u003e __11.2.1 Collecte des vidages de tas 236\u003cbr\u003e __11.2.2 Comment lire un vidage de tas 240\u003cbr\u003e __11.2.3 Requête de vidage de tas dans la console OQL 245\u003cbr\u003e Résumé 251\u003cbr\u003e\u003cbr\u003e \u003cb\u003ePARTIE III DÉPANNAGE DES SYSTÈMES À GRANDE ÉCHELLE\u003c\/b\u003e\u003cbr\u003e \u003cbr\u003e\u003cb\u003eCHAPITRE 12 : Analyse du comportement des applications déployées sur des systèmes à grande échelle 255\u003c\/b\u003e\u003cbr\u003e 12.1 Enquête sur les problèmes de communication interservices 256\u003cbr\u003e __12.1.1 Observation des requêtes HTTP avec la sonde de serveur HTTP 257\u003cbr\u003e __12.1.2 Observation des requêtes HTTP envoyées par votre application avec la sonde client HTTP 259\u003cbr\u003e __12.1.3 Analyse des événements de bas niveau des sockets 261\u003cbr\u003e 12.2 L'importance de la surveillance intégrée des journaux 263\u003cbr\u003e 12.3 Comment utiliser les outils de diffusion pour la recherche 270\u003cbr\u003e __12.3.1 Simulation de problèmes difficiles à reproduire par injection de fautes 272\u003cbr\u003e __12.3.2 Utilisation des techniques de mise en miroir pour les tests et la détection d'erreurs 273\u003cbr\u003e Résumé 274\u003cbr\u003e\u003cbr\u003e \u003cb\u003eANNEXE A Outils utilisés dans ce livre 275\u003cbr\u003e\u003cbr\u003e ANNEXE B Ouverture d'un projet 277\u003cbr\u003e\u003cbr\u003e ANNEXE C Autres références 279\u003cbr\u003e\u003cbr\u003e ANNEXE D Comprendre les threads Java 281\u003c\/b\u003e\u003cbr\u003e D.1 Qu'est-ce qu'un fil de discussion ? 282\u003cbr\u003e D.2 Cycle de vie du fil 284\u003cbr\u003e D.3 Synchronisation des threads 286\u003cbr\u003e __D.3.1 Bloc de synchronisation 286\u003cbr\u003e __D.3.2 Utilisation de wait(), notify() et notifyAll() 289\u003cbr\u003e __D.3.3 Jointure de fil 290\u003cbr\u003e __D.3.4 Blocage d'un thread pendant une période de temps fixe 291 \u003cbr\u003e__D.3.5 Synchronisation des threads et blocage des objets 292\u003cbr\u003e D.4 Problèmes courants liés aux architectures multithread 293\u003cbr\u003e __D.4.1 Conditions de course 293\u003cbr\u003e __D.4.2 Impasse 294\u003cbr\u003e __D.4.3 Ribrak 295\u003cbr\u003e __D.4.4 Kia ​​​​296\u003cbr\u003e D.5 Matériel supplémentaire 297\u003cbr\u003e\u003cbr\u003e \u003cb\u003eANNEXE E Cadre de gestion de la mémoire Java 299\u003c\/b\u003e\u003cbr\u003e E.1 Comment la JVM organise la mémoire de votre application 300\u003cbr\u003e E.2 Pile 302 utilisée par les threads pour stocker des données locales\u003cbr\u003e E.3 Mémoire Heap 308 utilisée par l'application pour stocker les instances d'objets\u003cbr\u003e E.4 Emplacements mémoire Metaspace pour le stockage des types de données 311\u003cbr\u003e\u003cbr\u003e Recherche 313\u003c\/div\u003e\n\u003cdiv\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cbr\u003e\u003cdiv\u003e\u003ch5\u003e \u003cb\u003eImage détaillée\u003c\/b\u003e \u003c\/h5\u003e\u003c\/div\u003e\n\u003cdiv\u003e\u003cdiv\u003e\u003cimg src=\"https:\/\/image.yes24.com\/momo\/TopCate4470\/MidCate006\/446952888.jpg\" border=\"0\" alt=\"Image détaillée 1\"\u003e\u003c\/div\u003e\u003c\/div\u003e\n\u003cbr\u003e\u003cdiv\u003e\u003ch5\u003e \u003cb\u003eDans le livre\u003c\/b\u003e\n\u003c\/h5\u003e\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e Un débogueur est un logiciel qui aide les développeurs à lire et à comprendre plus facilement le code source en exécutant ce code étape par étape tout en interrompant brièvement l'exécution aux commandes souhaitées. \u003cbr\u003eBien que les débogueurs soient un moyen courant d'étudier le comportement des logiciels (et souvent la première chose que les développeurs apprennent), ils ne sont pas la seule technique de débogage, ni utiles dans tous les scénarios (l'utilisation de base des débogueurs et les techniques avancées sont abordées dans les chapitres 2 et 3).\u003cbr\u003e Les différentes techniques de recherche que vous apprendrez tout au long de ce livre sont illustrées dans la figure 1.3.\u003cbr\u003e\u003cbr\u003e --- P.6\u003cbr\u003e\u003cbr\u003e Comme pour toute technique d'enquête, il y a des moments où l'utilisation des journaux de bord est appropriée et d'autres où elle ne l'est pas.\u003cbr\u003e Dans cette section, nous explorerons plusieurs scénarios où l'utilisation des journaux peut faciliter la compréhension du comportement de votre application.\u003cbr\u003e Nous aborderons d'abord quelques points clés concernant les messages de journalisation, puis nous verrons comment ces caractéristiques peuvent aider les développeurs à analyser les problèmes de leurs applications.\u003cbr\u003e\u003cbr\u003e --- P.87\u003cbr\u003e \u003cbr\u003eLa chose la plus simple que vous puissiez faire avec un profileur est d'observer comment votre application utilise les ressources système.\u003cbr\u003e Rien qu'en l'examinant de cette façon, vous pouvez découvrir des problèmes tels que des fuites de mémoire ou des threads zombies dans votre application.\u003cbr\u003e En analysant une application en cours d'exécution à l'aide d'un profileur, vous pouvez facilement détecter les comportements anormaux de l'application.\u003cbr\u003e Par exemple, les threads zombies qui restent actifs et occupent les ressources de l'application même après la fin de son exécution sont immédiatement exposés dans VisualVM.\u003cbr\u003e Voyons maintenant comment VisualVM peut être utilisé pour détecter et observer les signes d'une consommation anormale de ressources dans une application.\u003cbr\u003e\u003cbr\u003e --- P.117\u003cbr\u003e\u003cbr\u003e Configurez le pilote JDBC pour intercepter les requêtes que l'application envoie à la base de données.\u003cbr\u003e Suite à la vérification (Figure 7.14), la table des produits effectue une auto-jointure avec elle-même. \u003cbr\u003eC'est un problème sérieux ! Cet exemple peut paraître anodin, car la table ne contient que 10 enregistrements, mais dans une application réelle, elle en contiendrait probablement un très grand nombre. Un tel croisement de données entraînerait inévitablement une latence importante et, au final, des résultats incorrects (lignes dupliquées).\u003cbr\u003e En interceptant la requête avec VisualVM et en l'analysant, vous pouvez immédiatement identifier l'origine du problème.\u003cbr\u003e\u003cbr\u003e --- P.154\u003cbr\u003e\u003cbr\u003e Dans VisualVM, sélectionnez l'onglet Sampler, puis cliquez sur le bouton Memory pour démarrer une session d'échantillonnage de l'utilisation de la mémoire.\u003cbr\u003e Après avoir appelé le point de terminaison et attendu la fin de l'opération, vous verrez apparaître les objets alloués par votre application sur l'écran VisualVM après un court instant.\u003cbr\u003e (…) Je comprends qu’un grand nombre d’instances peuvent saturer la mémoire, mais est-il possible qu’un petit nombre d’instances volumineuses, comme celle mentionnée précédemment, puissent occuper la majeure partie de la mémoire ? Prenons l’exemple d’une application qui traite des fichiers vidéo volumineux. \u003cbr\u003eChargez 2 à 3 fichiers à la fois, mais les fichiers vidéo sont tellement volumineux qu'ils peuvent saturer la mémoire.\u003cbr\u003e Dans ces cas-là, il est judicieux d'étudier si l'application peut être optimisée en ne chargeant pas l'intégralité du fichier en mémoire d'un seul coup, mais plutôt en ne chargeant que des portions à la fois.\u003cbr\u003e\u003cbr\u003e --- P.231\u003cbr\u003e\u003cbr\u003e Cette application étant développée sur la base de Spring Boot, la valeur DSN est spécifiée dans l'attribut sentry.dsn du fichier application.properties, comme illustré dans l'extrait de code suivant.\u003cbr\u003e Ceci est facultatif dans Sentry, mais il est recommandé de spécifier l'environnement dans lequel votre application s'exécute si possible.\u003cbr\u003e En effet, vous pourrez ensuite filtrer les événements pour n'extraire que ceux qui vous intéressent.\u003cbr\u003e\n\n\u003c\/div\u003e\n\u003cdiv\u003e --- P.267\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cbr\u003e\u003cdiv\u003e\u003ch5\u003e \u003cb\u003eAvis de l'éditeur\u003c\/b\u003e\n\u003c\/h5\u003e\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e \u003cb\u003eConseils pour comprendre, déboguer et optimiser le code JVM afin d'améliorer sa lisibilité.\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e Au fur et à mesure de votre progression de carrière, vous constaterez que vous passez beaucoup plus de temps à lire du code qu'à en écrire. \u003cbr\u003eCe livre présente des techniques d'analyse de code permettant d'utiliser efficacement ce temps précieux.\u003cbr\u003e L'un de ses principaux avantages est qu'il explique le dépannage de manière conviviale pour les développeurs et orientée scénarios, depuis les bases du débogage et de la journalisation jusqu'aux techniques de profilage avancées et au fonctionnement des applications JVM.\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e La première partie aborde les bases des techniques d'investigation pour comprendre un code source.\u003cbr\u003e Les chapitres 2 à 4 sont consacrés au débogage, des simples points d'arrêt au débogage à distance, tandis que le chapitre 5 examine comment utiliser les journaux pour analyser les détails essentiels liés à l'implémentation du code.\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e La deuxième partie démontre à quel point le profilage peut être utile dans l'environnement de développement actuel, fortement axé sur les frameworks. \u003cbr\u003eLe chapitre 6 explique comment analyser l'utilisation du processeur et de la mémoire à l'aide d'outils de profilage tels que VisualVM et JProfiler, et le chapitre 7 explique comment étudier les problèmes de latence.\u003cbr\u003e Les chapitres 8 et 9 approfondissent l'architecture multithread, le chapitre 10 examine les vidages de threads et le chapitre 11 explique comment diagnostiquer les problèmes de mémoire en générant des vidages de tas.\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e La partie 3, chapitre 12, explique comment étudier les problèmes dans les grands systèmes d'entreprise composés de plusieurs applications, plutôt que d'une seule application.\u003cbr\u003e Nous examinerons comment chaque application « communique » avec les autres, l'impact de l'environnement dans lequel l'application est déployée et les considérations relatives à la mise en œuvre.\u003cbr\u003e Enfin, l'annexe fournit une explication détaillée du système de gestion des threads et de la mémoire de Java, qui sera d'une aide précieuse pour les développeurs Java.\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e Comprendre le fonctionnement réel des applications JVM peut vous aider à identifier la cause première des problèmes. \u003cbr\u003eIl s'agit d'un ouvrage rare qui couvre de manière exhaustive non seulement le débogage et la journalisation, mais aussi les techniques avancées de détection des problèmes dans les architectures de microservices.\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e \u003cb\u003eContenu principal\u003c\/b\u003e\u003cbr\u003e • Comprenez ce que fait le code que vous voyez pour la première fois.\u003cbr\u003e • Mise en évidence des problèmes de logique du code\u003cbr\u003e • Détecter les fuites de mémoire en évaluant les vidages de tas\u003cbr\u003e • Surveillez l'utilisation du processeur pour optimiser l'exécution.\u003cbr\u003e Détection et résolution des interblocages à l'aide de dumps de threads\u003cbr\u003e Comprendre les systèmes orientés services\/microservices\u003cbr\u003e • Utilisez correctement la journalisation pour comprendre en profondeur l'exécution des applications Java.\u003cbr\u003e • Utiliser efficacement le débogueur Java \u003c\/div\u003e\n\u003cdiv\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003cdiv style=\"width:95%;padding-top:20px;padding-bottom:20px\"\u003e\n\n\u003cdiv style=\"text-align:left;font-size:16px;font-weight:bold;padding-bottom:20px\"\u003e SPÉCIFICATIONS DES PRODUITS \u003c\/div\u003e\n\n\u003cdiv style=\"text-align:left;font-size:14px;line-height:1.6em;\"\u003e\n\n\u003cdiv style=\"width:100%;margin-bottom:5px;line-height:1.6em;font-size:14px\"\u003e - \u003cstrong\u003eDate d'émission :\u003c\/strong\u003e 9 mai 2024\u003c\/div\u003e\n\n\u003cdiv style=\"width:100%;margin-bottom:5px;line-height:1.6em;font-size:14px\"\u003e - \u003cstrong\u003eNombre de pages, poids, dimensions :\u003c\/strong\u003e 340 pages | 188 × 245 × 17 mm\u003c\/div\u003e\n\n\u003cdiv style=\"width:100%;margin-bottom:5px;line-height:1.6em;font-size:14px\"\u003e - \u003cstrong\u003eISBN13 :\u003c\/strong\u003e 9791193926208\u003c\/div\u003e\n\n\u003cdiv style=\"width:100%;margin-bottom:5px;line-height:1.6em;font-size:14px\"\u003e - \u003cstrong\u003eISBN10 :\u003c\/strong\u003e 1193926203 \u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\u003ccenter\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003cspan\u003e\u003c\/span\u003e\n\n\u003c\/center\u003e\n\n\n\u003c\/center\u003e","brand":"LIBRAIRIE COREENNE","offers":[{"title":"Default Title","offer_id":43893707538474,"sku":"110255","price":38.0,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0683\/2750\/5962\/files\/55936b10b585139fffafca5b51ee715e.jpg?v=1765412995","url":"https:\/\/librairie.coreenne.fr\/products\/110255","provider":"LIBRAIRIE COREENNE","version":"1.0","type":"link"}