Whether it is to determine the number of references to an object through a counting algorithm, or to determine whether the object reference chain is reachable through a root search algorithm, determining whether an object is alive is related to "references".
References are mainly divided into four types: Strong Reference, Soft Reference, Weak Reference, and Phantom Reference. The strength of the reference decreases sharply in turn.
Strong quotation:
refers to what is common in the code, similar to: "Object objectRef = new Object", this kind of reference will never be cleaned up by GC as long as the strong reference still exists.
Soft reference:
is used to describe some objects that are useful but do not necessarily exist. When the Jvm is out of memory (before memory overflow ) will be recycled. If there is still not enough space after executing GC, a memory overflow exception will be thrown.
Soft references are implemented through the SoftReference class. SoftReference is very suitable for implementing caching. In addition, when the GC believes that the scanned SoftReference is not frequently used, it may be recycled.
Usage:
##
User user = new User(); SoftReference<Object> softReference = new SoftReference<Object>(user); softReference.get();
Weak reference
Weak reference is also used Describes some objects that are useful but do not necessarily exist. Their strength will be weaker due to soft references. Objects associated with weak references can only survive until the next GC. When the GC works, it will be recycled regardless of whether the memory is sufficient. Drop objects associated with weak references. JDK implements this through the WeakReference class. When obtained, it can be obtained through the weakReference.get method, which may return nullYou can pass in a ReferenceQueue object to the WeakReference construct. When the reference object is represented as recyclable, isEnqueued returns true
User user = new User(); WeakReference<User> weakReference = new WeakReference<User>(user); weakReference.get(); ReferenceQueue<User> referenceQueue = new ReferenceQueue<User>(); WeakReference<User> weakReference2 = new WeakReference<User>(user, referenceQueue); //当引用对象被标识为可回收时 返回true, 即当user对象标识为可回收时,返回true weakReference.isEnqueued();
Dummy reference
Dummy reference is called "phantom reference" and it is the weakest A reference relationship, whether an object has a virtual reference, will not affect the survival time at all. The only purpose of setting a virtual reference association for an object is to receive a system notification when the object is recycled by GC. Implemented through the PhantomReference class. It is worth noting that the phantomReference.get method always returns null. When the user is deleted from the memory, calling isEnqueued will return true
User user = new User(); ReferenceQueue<User> referenceQueue = new ReferenceQueue<User>(); PhantomReference<User> phantomReference = new PhantomReference<User>(user, referenceQueue); //即当user对象标识为可回收时,返回true System.out.println(phantomReference.isEnqueued()); //永远返回null System.out.println(phantomReference.get());
Other related classes:
WeakCache weakCache = new WeakCache(); SoftCache softCache = new SoftCache(); WeakHashMap weakHashMap = new WeakHashMap();
The above is the content of Java virtual machine learning - object reference strength. For more related content, please pay attention to the PHP Chinese website (www.php.cn)!

Java is widely used in enterprise-level applications because of its platform independence. 1) Platform independence is implemented through Java virtual machine (JVM), so that the code can run on any platform that supports Java. 2) It simplifies cross-platform deployment and development processes, providing greater flexibility and scalability. 3) However, it is necessary to pay attention to performance differences and third-party library compatibility and adopt best practices such as using pure Java code and cross-platform testing.

JavaplaysasignificantroleinIoTduetoitsplatformindependence.1)Itallowscodetobewrittenonceandrunonvariousdevices.2)Java'secosystemprovidesusefullibrariesforIoT.3)ItssecurityfeaturesenhanceIoTsystemsafety.However,developersmustaddressmemoryandstartuptim

ThesolutiontohandlefilepathsacrossWindowsandLinuxinJavaistousePaths.get()fromthejava.nio.filepackage.1)UsePaths.get()withSystem.getProperty("user.dir")andtherelativepathtoconstructthefilepath.2)ConverttheresultingPathobjecttoaFileobjectifne

Java'splatformindependenceissignificantbecauseitallowsdeveloperstowritecodeonceandrunitonanyplatformwithaJVM.This"writeonce,runanywhere"(WORA)approachoffers:1)Cross-platformcompatibility,enablingdeploymentacrossdifferentOSwithoutissues;2)Re

Java is suitable for developing cross-server web applications. 1) Java's "write once, run everywhere" philosophy makes its code run on any platform that supports JVM. 2) Java has a rich ecosystem, including tools such as Spring and Hibernate, to simplify the development process. 3) Java performs excellently in performance and security, providing efficient memory management and strong security guarantees.

JVM implements the WORA features of Java through bytecode interpretation, platform-independent APIs and dynamic class loading: 1. Bytecode is interpreted as machine code to ensure cross-platform operation; 2. Standard API abstract operating system differences; 3. Classes are loaded dynamically at runtime to ensure consistency.

The latest version of Java effectively solves platform-specific problems through JVM optimization, standard library improvements and third-party library support. 1) JVM optimization, such as Java11's ZGC improves garbage collection performance. 2) Standard library improvements, such as Java9's module system reducing platform-related problems. 3) Third-party libraries provide platform-optimized versions, such as OpenCV.

The JVM's bytecode verification process includes four key steps: 1) Check whether the class file format complies with the specifications, 2) Verify the validity and correctness of the bytecode instructions, 3) Perform data flow analysis to ensure type safety, and 4) Balancing the thoroughness and performance of verification. Through these steps, the JVM ensures that only secure, correct bytecode is executed, thereby protecting the integrity and security of the program.


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Zend Studio 13.0.1
Powerful PHP integrated development environment

DVWA
Damn Vulnerable Web App (DVWA) is a PHP/MySQL web application that is very vulnerable. Its main goals are to be an aid for security professionals to test their skills and tools in a legal environment, to help web developers better understand the process of securing web applications, and to help teachers/students teach/learn in a classroom environment Web application security. The goal of DVWA is to practice some of the most common web vulnerabilities through a simple and straightforward interface, with varying degrees of difficulty. Please note that this software

SublimeText3 English version
Recommended: Win version, supports code prompts!

WebStorm Mac version
Useful JavaScript development tools

SublimeText3 Chinese version
Chinese version, very easy to use
