Optimisation du cycle de vie mémoire dans les applications Java héritées : maîtrise des pauses Young GC
Contexte et problème observé
Une plateforme critique basée sur un moteur de règles affichait des interruptions anormales durant la phase jeune (Young Generation) après chaque redémarrage. Malgré un volume de trafic modéré, les requêtes déclenchaient ponctuellement des arrêts de l'application (Stop-The-World) d'une durée comprise entre 1 et 2 se ...
Publié le 11 octobre à 15h33
Analyse des mécanismes internes et de la gestion mémoire de String, StringBuffer et StringBuilder en Java
Architecture fondamentale des types textuels
En environnement Java, la manipulation de données textuelles s'appuie sur une triade de classes dont le comportement diffère radicalement selon la nature des données et la contrainte de concurrence. Le premier membre offre une garantie stricte d'intégrité, tandis que les suivants privilégient la flex ...
Publié le 28 septembre à 07h32
Architecture Logicielle en Java : Interfaces et Classes Internes
Les Interfaces dans le Design Système
À mesure que la complexité des applications logicielles augmente, la modularisation devient cruciale. La conception d'interfaces joue un rôle fondamental dans cette discipline. Une architecture robuste repose sur une séparation claire des responsabilités. En adoptant une approche basée sur les interfaces, o ...
Publié le 27 septembre à 22h11
Caractéristiques avancées de Java (mise à jour 2023)
Java est un langage orienté objet. La différence entre l'approche orientée objet et celle procédurale est abordée dans la section suivante.
Java possède une indépendance plateforme et une portabilité.
Java a une devise : « Écrivez une fois, exécutez partout ». Cette caractéristique permet aux programmes compilés d'être exécutés sur n'importe q ...
Publié le 23 septembre à 14h03
Identification du collecteur de déchets par défaut dans le JDK 8
De nombreux ouvrages de référance sur la machine virtuelle Java (JVM) indiquent que, pour le JDK 8 en mode Server, la combinaison par défaut des collecteurs de déchets (Garbage Collectors) est Parallel Scavenge pour la jeune génération et Serial Old (souvent nommé PS MarkSweep) pour l'ancienne génération. Cet article explore la réalité techniqu ...
Publié le 11 septembre à 18h34
Maîtriser les coroutines Kotlin : Guide technique et mise en œuvre
Configuration de l'environnement
Pour intégrer les coroutines dans un projet Kotlin, la méthode la plus courante consiste à utiliser Gradle. Ajoutez la dépendance suivante à votre fichier build.gradle :
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4"
Pour des tests rapides via la ligne de commande avec un script ...
Publié le 4 septembre à 20h48
Compréhension et diagnostic des fuites de mémoire en Java
En dépit de la présence d'un Garbage Collector (GC) assurant la gestion automatique de la mémoire en Java, les applications peuvent subir des fuites de mémoire. Ce phénomène, distinct de l'erreur OutOfMemoryError, survient lorsque des objets inutilisés restent référencés de manière involontaire, empêchant le GC de libérer l'espace heap. Dans un ...
Publié le 21 août à 09h30
Maîtriser les Pools de Threads Java : Guide Pratique
L'utilisation directe de threads est souvent inefficace dans les applications concurrentes. Un pool de threads offre plusieurs avantages critiques :
Optimisation des ressources : Évite la surcharge système liée à la création et destruction répétée de threads.
Contrôle de la concurrence : Limite le nombre de tâches simultanées pour prévenir l'é ...
Publié le 8 août à 21h53
Le Processus d'Instanciation des Classes dans la JVM
Introduction
Avant qu'un objet Java ne puisse être manipulé, il est impératif qu'il soit correctement initialisé. L'instanciation est le mécanisme par lequel une classe sert de modèle pour créer une instance concrète en mémoire. L'instruction courante Personne p = new Personne(); illustre précisément la création d'une nouvelle instance de la cl ...
Publié le 24 juillet à 03h59
Les quatre types de références en Java : forte, souple, faible et fantôme
Localisation des objets dans la JVM
En Java, une variable de référence sur la pile manipule l'objet concret stocké dans le tas (heap). La méthode d'accès à l'objet dépend de l'implémentation de la machine virtuelle. Deux approches dominantes existent : l'utilisation de handles (poignées) et le pointage direct.
Avec des handles : Le tas est div ...
Publié le 22 juillet à 20h56