What is JVM?
JVM is the abbreviation of Java Virtual Machine (Java Virtual Machine). JVM is a specification for computing devices. It is a fictitious computer that is simulated through simulation on an actual computer. various computer functions. The Java virtual machine includes a set of bytecode instructions, a set of registers, a stack, a garbage collection heap and a storage method field.
JVM shields information related to specific operating system platforms, so that Java programs only need to generate target code (bytecode) that runs on the Java virtual machine, and can be run on multiple platforms without modification. run. When the JVM executes bytecode, it actually ultimately interprets the bytecode into machine instructions for execution on the specific platform.
JVM memory area
When running, the JVM will divide the memory it manages into multiple areas, each area has its own purpose and life cycle. Let’s break them down one by one based on the memory partition pictures:
Program Counter Register
The program counter occupies a small amount of memory. Its role can be seen as an indicator of the bytecode executed by the current thread. By changing the value of the counter, the next bytecode instruction can be obtained.
When the program counter executes the Native method, the value of the counter is empty (undefined).
The program counter is thread-private, and each thread will be assigned one.
Online video tutorial sharing: java learning
Virtual machine stack (VM Stack)
The virtual machine stack is executed by the JVM Java method service. When each method is executed, a stack frame will be created to store local variable table, operand stack, dynamic link, method exit and other information. From the call to the end of execution of each method, it corresponds to the process of pushing a stack frame from the virtual machine stack to popping it out.
The local variable table of the virtual machine stack stores the following data:
Basic type data (boolean, byte, char, short, int, float, long, double)
Object reference (reference type)
returnAddress type (pointing to the address of a bytecode instruction)
It should be noted that the memory space required for the local variable table has been determined during compilation , the size will no longer change.
The virtual machine stack is also thread-private, and each thread will be assigned one.
JVM specifies two exceptions for the virtual machine stack:
StackOverflowError: The stack depth requested by the thread is greater than the depth allowed by the virtual machine.
OutOfMemoryError: If the virtual machine stack can be dynamically expanded, but insufficient memory cannot be applied for during expansion.
Native Method Stack
The local method stack is similar to the virtual machine stack. The main difference is that the local method stack specifically provides services for Native methods.
Native method: The method declared by the Native keyword in java, implemented in non-java language, refers to the third-party language method provided by the local library.
The local method stack is also thread-private, and each thread will allocate one.
Heap
The heap is a memory area shared by all threads. It is created when the JVM starts. It is generally the largest piece of space in the JVM. The garbage collector ( The main area managed by GC).
The main data stored in the heap is:
Object
Array
The heap can be physically discontinuous, but as long as it is logically continuous , thus an expandable memory area.
When the heap memory size is not enough to create an object or array and cannot be expanded, an OutOfMemoryError exception will be thrown.
Method Area
The method area is also a memory area shared by all threads.
The main data stored in the method area is:
Class information that has been loaded by the JVM
Constant (starting from jdk1.7, the runtime constant pool has been moved to the heap)
Static variables
Code and other data compiled by just-in-time compiler
Garbage collector (GC) rarely appears in this area, and the main memory recycling target is the constant pool Recycling and unloading of types.
When the method area cannot meet the memory allocation requirements, an OutOfMemoryError exception will be thrown.
Constant Pool (Runtime Constant Pool)
The constant pool is part of the method area and is used to store various literals and symbol references generated during compilation. Constants can be put into the pool at both compile time and run time (String's intern()). The memory is limited and an OutOfMemoryError exception is thrown when it cannot be applied for.
Starting from jdk1.7, the runtime constant pool has been moved to the heap.
Direct Memory
Direct memory is not the JVM runtime memory data area, nor is it memory defined in the JVM specification.
Direct memory occupies the size of physical memory. You need to pay attention to include direct memory when allocating JVM memory. Otherwise, an OutOfMemoryError exception may occur when dynamically expanding memory.
Recommended related article tutorials: Getting started with java
The above is the detailed content of Division of memory areas in java. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undress AI Tool
Undress images for free

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

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

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

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

To correctly handle JDBC transactions, you must first turn off the automatic commit mode, then perform multiple operations, and finally commit or rollback according to the results; 1. Call conn.setAutoCommit(false) to start the transaction; 2. Execute multiple SQL operations, such as INSERT and UPDATE; 3. Call conn.commit() if all operations are successful, and call conn.rollback() if an exception occurs to ensure data consistency; at the same time, try-with-resources should be used to manage resources, properly handle exceptions and close connections to avoid connection leakage; in addition, it is recommended to use connection pools and set save points to achieve partial rollback, and keep transactions as short as possible to improve performance.

TheJVMenablesJava’s"writeonce,runanywhere"capabilitybyexecutingbytecodethroughfourmaincomponents:1.TheClassLoaderSubsystemloads,links,andinitializes.classfilesusingbootstrap,extension,andapplicationclassloaders,ensuringsecureandlazyclassloa

Use classes in the java.time package to replace the old Date and Calendar classes; 2. Get the current date and time through LocalDate, LocalDateTime and LocalTime; 3. Create a specific date and time using the of() method; 4. Use the plus/minus method to immutably increase and decrease the time; 5. Use ZonedDateTime and ZoneId to process the time zone; 6. Format and parse date strings through DateTimeFormatter; 7. Use Instant to be compatible with the old date types when necessary; date processing in modern Java should give priority to using java.timeAPI, which provides clear, immutable and linear

Pre-formanceTartuptimeMoryusage, Quarkusandmicronautleadduetocompile-Timeprocessingandgraalvsupport, Withquarkusoftenperforminglightbetterine ServerLess scenarios.2.Thyvelopecosyste,

Networkportsandfirewallsworktogethertoenablecommunicationwhileensuringsecurity.1.Networkportsarevirtualendpointsnumbered0–65535,withwell-knownportslike80(HTTP),443(HTTPS),22(SSH),and25(SMTP)identifyingspecificservices.2.PortsoperateoverTCP(reliable,c

Java's garbage collection (GC) is a mechanism that automatically manages memory, which reduces the risk of memory leakage by reclaiming unreachable objects. 1.GC judges the accessibility of the object from the root object (such as stack variables, active threads, static fields, etc.), and unreachable objects are marked as garbage. 2. Based on the mark-clearing algorithm, mark all reachable objects and clear unmarked objects. 3. Adopt a generational collection strategy: the new generation (Eden, S0, S1) frequently executes MinorGC; the elderly performs less but takes longer to perform MajorGC; Metaspace stores class metadata. 4. JVM provides a variety of GC devices: SerialGC is suitable for small applications; ParallelGC improves throughput; CMS reduces

Gradleisthebetterchoiceformostnewprojectsduetoitssuperiorflexibility,performance,andmoderntoolingsupport.1.Gradle’sGroovy/KotlinDSLismoreconciseandexpressivethanMaven’sverboseXML.2.GradleoutperformsMaveninbuildspeedwithincrementalcompilation,buildcac

defer is used to perform specified operations before the function returns, such as cleaning resources; parameters are evaluated immediately when defer, and the functions are executed in the order of last-in-first-out (LIFO); 1. Multiple defers are executed in reverse order of declarations; 2. Commonly used for secure cleaning such as file closing; 3. The named return value can be modified; 4. It will be executed even if panic occurs, suitable for recovery; 5. Avoid abuse of defer in loops to prevent resource leakage; correct use can improve code security and readability.
