Maison > Java > javaDidacticiel > Références Java

Références Java

PHPz
Libérer: 2024-08-30 15:17:41
original
1025 Les gens l'ont consulté

L'un des avantages du langage Java est qu'il gère automatiquement la mémoire du programmeur, sans avoir à se soucier de la gestion de la mémoire et sans avoir à s'inquiéter de libérer la mémoire de l'objet lorsque celui-ci n'en a plus besoin. Le thread Java Garbage Collector fait cela pour le programmeur ; il balaie l'objet indésirable et libère la mémoire sous le contrôle de JVM. Le programmeur peut également contrôler le moment où les objets seront récupérés lorsque cela est nécessaire en utilisant les classes java.lang.ref. Il existe quatre types de références en Java en fonction de la manière dont elles sont récupérées ou en fonction du comportement du Garbage Collector sur les références.

Commencez votre cours de développement de logiciels libres

Développement Web, langages de programmation, tests de logiciels et autres

Types de références Java avec exemples

Il existe quatre types de références Java basées sur le comportement du Garbage Collector sur les références.

  • Références fortes : Il s'agit de la référence par défaut en Java. Des références fortes peuvent être créées lorsqu'un objet est défini régulièrement.
  • Références faibles : Cette référence est à préciser explicitement. Les références faibles peuvent être créées en utilisant la classe java.lang.ref.WeakReference.
  • Références logicielles : Des références logicielles peuvent être créées à l'aide de la classe lang.ref.SoftReference.
  • Références fantômes : les références fantômes peuvent être créées en utilisant la classe lang.ref.PhantomReference.

1. De solides références

Une référence forte est généralement celle que nous utilisons lorsque nous écrivons le code Java ou que nous créons un objet. Un objet qui a une référence forte et actif dans la mémoire n'est pas éligible pour le garbage collection, un objet qui a des points fortement référencés sur null peut être récupéré. Par exemple, l'extrait de code ci-dessous où la variable ob est l'objet de type ClassA.

ClassA ob = new ClassA();
Copier après la connexion
Copier après la connexion

Un objet « ob » a une référence forte vers laquelle pointe vers la classe ClassA ; cet objet ne peut pas être récupéré car un ob est un objet actif.

Si la référence 'ob' pointe vers null comme ci-dessous –

ob = null;
Copier après la connexion

Maintenant, l'objet ne fait plus référence à la classe ClassA ; un objet est désormais éligible à la collecte des ordures.

Exemple

Code :

package p1;
class ClassA
{
// something
}
public class Demo {
public static void main( String[] arg )
{
ClassA ob = new ClassA(); // default reference or Strong Reference
System.out.println(ob);
ob = null; // Now object <u>ob</u> pointing to null and is available for garbage collection
System.out.println(ob);
}
}
Copier après la connexion

Sortie :

Références Java

2. Faibles références

La référence faible est éligible au garbage collection. Une fois que JVM détecte un objet avec une référence faible, cet objet est marqué et les déchets sont collectés lorsque le thread du garbage collector est exécuté par JVM. Ces types de références sont utilisés dans WeakHashMap pour l'entrée de l'objet. Les références faibles peuvent être créées par la classe lang.ref.WeakReference. La référence faible pouvant être utilisée dans une application était d'établir DBConnection, et une fois la base de données fermée, la connexion libérée par Garbage Collector. Par exemple, l'extrait de code ci-dessous où la variable ob est l'objet de type ClassA.

ClassA ob = new ClassA();
Copier après la connexion
Copier après la connexion

Un objet « ob » est une référence forte pour le rendre récupérable, nous devons convertir sa révérence en référence faible comme ci-dessous –

WeakReference<ClassA> weakob = new WeakReference<ClassA>(ob);
Copier après la connexion

Maintenant, l'objet fait faiblement référence à la classe ClassA, un objet est désormais disponible pour le garbage collection, et il est récupéré lorsque la JVM exécute le thread de garbage collection.

Exemple

Code :

package p1;
import java.lang.ref.WeakReference;
class ClassA
{
// something
}
public class Demo {
public static void main( String[] arg )
{
ClassA ob = new ClassA();  // default reference or Strong Reference
System.out.println(ob);
// now create Weak Reference object to which <u>ob</u> object is pointing
WeakReference <ClassA> weakob = new WeakReference <ClassA>(ob);
// Now <u>ob</u> object is eligible for garbage collection, but it will be remove from memory when JVM needs memory
ob = null;
System.out.println(ob);
// weakly referenced <u>ob</u> object can get back
ob = weakob.get();
System.out.println(ob);
}
}
Copier après la connexion

Sortie :

Références Java

3. Références douces

L'objet de référence logicielle n'est pas éligible pour le garbage collection jusqu'à ce que la JVM manque de mémoire ou que la JVM ait vraiment besoin de mémoire. Les références faibles peuvent être créées par la classe lang.ref.SoftReference. Par exemple, la référence douce peut créer de la même manière qu'une référence faible.

SoftReference <ClassA> softob = new SoftReference <ClassA>(ob);
Copier après la connexion
Exemple

Code :

package p1;
import java.lang.ref.SoftReference;
class ClassA
{
// something
}
public class Demo {
public static void main( String[] arg )
{
ClassA ob = new ClassA();// default reference or Strong Reference
System.out.println(ob);
// now create soft Reference object which ob object is pointing
SoftReference <ClassA> softob = new SoftReference <ClassA>(ob);
// Now ob object is eligible for garbage collection, but it will be garbage collected when JVM badly needs memory
ob = null;
System.out.println(ob);
// the soft referenced, ob object can get back
ob = softob.get();
System.out.println(ob);
}
}
Copier après la connexion

Sortie :

Références Java

4. Références fantômes

Un objet de référence fantôme est disponible pour le garbage collection, mais avant de le récupérer, un objet est placé dans une file d'attente de référence nommée « file d'attente de référence » par la JVM ; après l'appel de la fonction finalize() sur l'objet. Les références faibles peuvent être créées par la classe lang.ref. Référence fantôme.

Exemple

Code :

package p1;
import java.lang.ref.ReferenceQueue;
import java.lang.ref.PhantomReference;
class ClassA
{
// something
}
public class Demo {
public static void main( String[] arg )
{
ClassA ob = new ClassA();  // default reference or Strong Reference
System.out.println(ob);
// now Create Reference queue object
ReferenceQueue <ClassA> refq = new ReferenceQueue <ClassA>();
// Create Phantom Reference object to which <u>ob</u> object is pointing
PhantomReference <ClassA> phantomob = new PhantomReference <ClassA>(ob,refq);
// Now <u>ob</u> object is eligible for garbage collection, but it will be kept in '<u>refq</u>' before removing
ob = null;
System.out.println(ob);
// to get back object which has been Phantom referenced returns null
ob = phantomob.get();
System.out.println(ob);
}
}
Copier après la connexion

Sortie :

Références Java

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!

Étiquettes associées:
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers numéros
Impossible d'installer Java
Depuis 1970-01-01 08:00:00
0
0
0
Java peut-il être utilisé comme backend du Web ?
Depuis 1970-01-01 08:00:00
0
0
0
Installer JAVA
Depuis 1970-01-01 08:00:00
0
0
0
Aide : Données chiffrées JAVA Décryptage PHP
Depuis 1970-01-01 08:00:00
0
0
0
Est-ce en langage Java ?
Depuis 1970-01-01 08:00:00
0
0
0
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal