Allocation de mémoire en Java : tout ce que vous devez savoir en 2022

Publié: 2021-01-10

L'allocation de mémoire en Java fait référence au processus d'allocation des programmes et services informatiques dédiés aux espaces de mémoire virtuelle. La machine virtuelle Java divise la mémoire en mémoire de pile et de tas. Pour Java Virtual Machine, l'exécution d'une application dans son potentiel maximal peut se produire à partir de la mémoire de la pile et du tas. Chaque fois qu'une nouvelle variable ou un nouvel objet est déclaré, la mémoire alloue de la mémoire dédiée à ces opérations.

Table des matières

Mémoire de pile

L' allocation de mémoire de stock en Java est utilisée pour la mémoire statique et l'exécution des threads. Les valeurs contenues dans cette mémoire sont temporaires et limitées à des méthodes spécifiques car elles sont référencées en mode dernier entré, premier sorti.

Dès que la mémoire est appelée et qu'un nouveau bloc est créé dans la mémoire de la pile, la mémoire de la pile conserve alors les valeurs primitives et les références jusqu'à ce que la méthode dure. Après sa fin, le bloc est vidé et est disponible pour qu'un nouveau processus ait lieu. En général, la taille globale de la mémoire de pile est insignifiante par rapport à celle de la mémoire de tas.

Apprenez à créer des applications comme Swiggy, Quora, IMDB et plus

Caractéristiques de la mémoire de pile

Sur la base des différentes sections de l' allocation de mémoire dans Java Virtual Machine (JVM) , voici quelques-unes des caractéristiques discrètes de la mémoire de la pile :

  • La mémoire de la pile peut augmenter ou se contracter lorsque de nouvelles méthodes sont appelées et renvoyées en conséquence.
  • Toute variable de la pile peut s'exécuter tant que la portée de la méthode existe.
  • Il obtient l'auto-allocation et la désallocation au fur et à mesure de l'exécution d'une méthode.
  • En cas de mémoire pleine, la java.lang.StackOverFlowError se déclenche.
  • Son accès est plus rapide par rapport à la mémoire de tas.

Lire : Full-Stack vs ingénieur logiciel : lequel choisir ?

Méthodes utilisées dans l' allocation de mémoire de pile en Java

  • Object push(Object element): Ici, un élément est poussé vers le haut de la pile.
  • Object pop() : tout élément situé en haut de la pile est vidé et renvoyé. Dans le cas où une pile est vacante lorsque le pop() est invoqué, l'exception - EmptyStackException se produit.
  • Object peek() : Ici, l'élément supérieur est renvoyé mais ne subit pas de vidage.
  • Boolean empty() : si la boucle n'a pas de valeur supérieure dans sa pile, la fonction renvoie 1 (vrai), sinon 0 (faux).
  • Dans la recherche (élément d'objet) : Ceci est utilisé pour comprendre si un objet est présent dans la pile. Si la valeur est trouvée, la fonction renvoie l'emplacement de l'élément à partir du haut de la pile, sinon renvoie -1.

Lire : Projets et sujets Java pour les débutants

Java heap space

Principalement utilisé par le runtime Java, Java Heap Space entre en jeu chaque fois qu'un objet est créé et alloué dedans. La fonction discrète, comme Garbage Collection, continue de vider la mémoire utilisée par les objets précédents qui ne contiennent aucune référence. Pour un objet créé dans le Heap Space peut avoir un accès libre à travers l'application.

L' allocation de mémoire en Java est divisée en parties, à savoir Heap, Stack, Code et Static.

Caractéristiques de la mémoire Java Heap

  • Accessible à partir de la technique de gestion de la mémoire compliquée, y compris la jeune génération, la génération ancienne ou titulaire et la génération permanente.
  • Dans la mémoire de tas, lorsqu'elle est pleine, elle renvoie java.lang.OutOfMemoryError.
  • L'accès dans cette mémoire est comparativement plus lent que celui de la mémoire pile.
  • Il ne subit pas de désallocation automatique et nécessite une fonction similaire à Garbage Collector pour supprimer les objets étrangers afin que la mémoire fonctionne à son stade optimal.

Un exemple d'allocation de mémoire de pile et de tas en Java est :

La source

Espace de tas et mémoire de pile : différences fondamentales

Mémoire d'espace de tas Mémoire de pile
Toutes les parties de l'application invoquent la mémoire de tas. L'exécution de la mémoire de la pile est limitée à un seul thread.
Chaque fois qu'un objet est créé, il est stocké dans l'espace de tas. La mémoire de pile ne comprend que sa référence et ses variables primitives locales.
Les objets ici sont accessibles globalement dans l'application. Les autres threads ne peuvent pas accéder aux objets de la mémoire de la pile.
Ici, la mémoire se définit selon les jeunes et les anciennes générations. La gestion de la mémoire s'effectue sur la base du dernier entré, premier sorti.
La mémoire reste conforme à la portée de l'application. La mémoire est temporaire.
Les méthodes telles que – XMX et XMS JVM sont utilisées pour définir la taille optimale du tas de mémoire. Pour la mémoire de pile, elle est déterminée par la méthode -XSS.
Ici, l'exception de java.lang.OutOfMemoryError se produit dans le cas d'une mémoire pleine. Ici, l'erreur java.lang.StackOverFlowError se produit si la mémoire est pleine.
La taille est plus importante mais prend du temps à traiter par rapport à la mémoire de la pile. La taille est moindre mais plus rapide dans l'exécution pour son fonctionnement LIFO fluide.

Lisez aussi: Salaire d'un développeur Java en Inde

Apprenez des cours de logiciels en ligne dans les meilleures universités du monde. Gagnez des programmes Executive PG, des programmes de certificat avancés ou des programmes de maîtrise pour accélérer votre carrière.

Conclusion

L'allocation de mémoire en Java se produit de deux manières, principalement, l'espace de pile et de tas. Nous espérons que cela vous a aidé à comprendre le processus de tout cela.

Si vous souhaitez en savoir plus sur le développement de logiciels à pile complète, consultez le programme Executive PG de upGrad & IIIT-B en développement de logiciels à pile complète, conçu pour les professionnels en activité et offrant plus de 500 heures de formation rigoureuse, plus de 9 projets, et affectations, statut d'ancien de l'IIIT-B, projets de synthèse pratiques et aide à l'emploi avec les meilleures entreprises.

Comment se passe la gestion de la mémoire en Java ?

Java Virtual Machine (JVM) est un programme informatique utilisé pour exécuter des programmes écrits en langage de programmation Java. Cela rend le processus d'utilisation de la gestion de la mémoire efficace. En outre, il est conçu pour être robuste afin que même en cas de panne du système d'exploitation, le programme en cours d'exécution sur la JVM ne soit pas affecté. La gestion de la mémoire consiste à gérer chaque élément de mémoire (RAM) d'un système informatique. JVM surveille l'allocation et la libération de mémoire en cas de besoin. Dès qu'un programme est chargé en mémoire, la JVM lui alloue de l'espace mémoire. Ce processus est appelé tas. Le tas est un espace mémoire commun pour de nombreuses parties de l'application.

Qu'est-ce que la récupération de place en Java ?

La machine virtuelle Java (JVM) utilise le comptage de références pour suivre le nombre d'objets Java. Avant qu'un objet puisse être collecté, le nombre de références à cet objet doit atteindre zéro. Le programme utilisateur peut explicitement supprimer des objets en appelant la méthode finalize(). Finalize est une méthode statique de la classe Object appelée par Garbage Collector (GC). La méthode Finalize libérera toutes les ressources de l'objet avant que Garbage Collector ne s'occupe de cet objet. Garbage Collector est le processus de nettoyage des objets indésirables. Le processus de Garbage Collector sera déclenché lorsque le système d'exécution Java détectera que le tas Java est presque plein. Chaque objet a un bitmap dans JVM. Le bitmap est défini pour chaque objet afin de savoir s'il a été utilisé ou non. Lorsque le bitmap est mis à 0, GC s'occupera de cet objet.

Quelles sont les fonctionnalités du langage de programmation Java ?

Le langage de programmation Java est un langage de programmation de haut niveau à usage général utilisé pour créer des applications et des applets. Le logiciel Java peut s'exécuter sur n'importe quelle plate-forme prenant en charge Java sans être reprogrammé. Les fonctionnalités du langage de programmation Java sont les suivantes : fonctionnalités orientées objet, robustes, haute sécurité et indépendantes de la plate-forme, gratuites, faciles à apprendre et à utiliser. Java est un langage de programmation orienté objet qui est indépendant de la plate-forme et peut également être utilisé sur n'importe quel système d'exploitation ou plate-forme. Java est un langage compilé et un bytecode est produit qui est ensuite exécuté dans la machine virtuelle Java.