Table of Contents
  • 1: Java technology system module diagram

  • " >
    • 1: Java technology system module diagram

  • 2: JVM memory area model

  • " >
    • 2: JVM memory area model

    3. Local method stack
    4. Heap
    ##Old generation: " >##Old generation:
    Home Java javaTutorial Java Virtual Machine Learning - Architecture Memory Model

    Java Virtual Machine Learning - Architecture Memory Model

    Feb 17, 2017 am 10:48 AM


    • 1: Java technology system module diagram

    • 2: JVM memory area model





    #1. Method area

    Also known as "permanent generation" and "non-heap", it is used to store class information, constants, static variables, etc. loaded by the virtual machine. Memory area shared by threads

    . The default minimum value is 16MB and the maximum value is 64MB. You can limit the size of the method area through the -XX:PermSize and -XX:MaxPermSize parameters.

    Runtime constant pool: It is part of the method area. In addition to the description information such as the class version, fields, methods, interfaces, etc., the Class file also has a constant pool. Used to store various symbol references generated by the compiler. This content will be placed in the runtime constant pool in the method area after the class is loaded.

    2. Virtual machine stack

    describes the memory model of java method execution : When each method is executed, a "stack frame" will be created to store information such as local variable tables (including parameters), operation stacks, and method exits. The process from each method being called to the completion of execution corresponds to the process of a stack frame from being pushed into the stack to being popped out of the stack in the virtual machine stack. The declaration cycle is the same as the thread and is
    private to the thread

    .

    The local variable table stores various basic data types (boolean, byte, char, short, int, float, long, double) and object references (reference pointers) known to the compiler. Not the object itself), the 64-bit long and double type data will occupy the space of 2 local variables, and the other data types will only occupy 1. The memory space required for the local variable table is allocated during compilation. When entering a method, the size of the local variables that the method needs to allocate in the stack frame is completely determined. The stack frame will not change the size of the local variable table during runtime. space.

    3. Local method stack

    # is basically similar to the virtual machine stack. The difference is that the virtual machine stack is the java executed by the virtual machine. Method services, while the local method stack serves Native methods.

    4. Heap

    Also called java heap, GC heap is the largest memory managed by the java virtual machine A memory area, which is also A memory area shared by various threads, is created when the JVM starts. This memory area stores object instances and arrays (all new objects). The size is set by the -Xms (minimum value) and -Xmx (maximum value) parameters. -Xms is the minimum memory requested when the JVM starts. The default is 1/64 of the physical memory of the operating system but less than 1G. -Xmx is the maximum memory that the JVM can apply for. The default is 1/4 of the physical memory but less than 1G. The default is when the free heap memory is less than 40 %, the JVM will increase the Heap to the size specified by -Xmx. You can specify this ratio through -XX:MinHeapFreeRation=; when the free heap memory is greater than 70%, the JVM will reduce the size of the Heap to ## The size specified by #-Xms can be specified by XX:MaxHeapFreeRation=. For the running system, in order to avoid frequent adjustments to the Heap size during runtime, usually -Xms and -Xmx The values ​​are set to the same .

    Since collectors now use generational collection algorithms, the heap is divided into the new generation and the old generation. The new generation mainly stores newly created objects and objects that have not yet entered the old generation. The old generation stores objects that have survived multiple minor GCs.

    New generation:

    The newly created objects of the program are all from The new generation allocates memory. The new generation consists of Eden Space and two Survivor Spaces of the same size (usually also called S0 and S1 or From and To). The size of the new generation can be specified through the -Xmn parameter, or -XX: SurvivorRation to adjust the size of Eden Space and Survivor Space.

    ##Old generation:

    is used to store objects that have survived multiple times of new generation GC, such as cache objects. Newly created objects may also directly enter the old generation. There are two main situations: ①. For large objects, you can set the startup parameter -XX:PretenureSizeThreshold=1024 (unit is bytes, default is 0) to indicate that when it exceeds the size, it will not be allocated in the new generation, but will be allocated directly in the old generation. ②. For large array objects, there are no external objects referenced in the array.

    The memory size occupied by the old generation is the value corresponding to -Xmx minus the value corresponding to -Xmn.

    5. Program counter

    is the smallest memory area. Its function is the line number indicator of the bytecode executed by the current thread. In the virtual machine model, the bytecode interpreter works by changing the value of this counter. The next bytecode instruction that needs to be executed, basic functions such as branching, looping, exception handling, and thread recovery all need to rely on counters.


    • #3: Direct memory

    Direct memory is not part of the virtual machine memory, nor is it a memory area defined in the Java virtual machine specification. The newly added NIO in jdk1.4 introduces the IO method of channel and buffer. It can call the Native method to directly allocate off-heap memory. This off-heap memory is the local memory and will not affect the size of the heap memory.

    The above is the content of Java virtual machine learning - architecture memory model. For more related content, please pay attention to the PHP Chinese website (www.php.cn)!


    Statement of this Website
    The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

    Hot AI Tools

    Undresser.AI Undress

    Undresser.AI Undress

    AI-powered app for creating realistic nude photos

    AI Clothes Remover

    AI Clothes Remover

    Online AI tool for removing clothes from photos.

    Undress AI Tool

    Undress AI Tool

    Undress images for free

    Clothoff.io

    Clothoff.io

    AI clothes remover

    Video Face Swap

    Video Face Swap

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

    Hot Tools

    Notepad++7.3.1

    Notepad++7.3.1

    Easy-to-use and free code editor

    SublimeText3 Chinese version

    SublimeText3 Chinese version

    Chinese version, very easy to use

    Zend Studio 13.0.1

    Zend Studio 13.0.1

    Powerful PHP integrated development environment

    Dreamweaver CS6

    Dreamweaver CS6

    Visual web development tools

    SublimeText3 Mac version

    SublimeText3 Mac version

    God-level code editing software (SublimeText3)

    Java Spring Interview Questions Java Spring Interview Questions Aug 30, 2024 pm 04:29 PM

    In this article, we have kept the most asked Java Spring Interview Questions with their detailed answers. So that you can crack the interview.

    Break or return from Java 8 stream forEach? Break or return from Java 8 stream forEach? Feb 07, 2025 pm 12:09 PM

    Java 8 introduces the Stream API, providing a powerful and expressive way to process data collections. However, a common question when using Stream is: How to break or return from a forEach operation? Traditional loops allow for early interruption or return, but Stream's forEach method does not directly support this method. This article will explain the reasons and explore alternative methods for implementing premature termination in Stream processing systems. Further reading: Java Stream API improvements Understand Stream forEach The forEach method is a terminal operation that performs one operation on each element in the Stream. Its design intention is

    PHP: A Key Language for Web Development PHP: A Key Language for Web Development Apr 13, 2025 am 12:08 AM

    PHP is a scripting language widely used on the server side, especially suitable for web development. 1.PHP can embed HTML, process HTTP requests and responses, and supports a variety of databases. 2.PHP is used to generate dynamic web content, process form data, access databases, etc., with strong community support and open source resources. 3. PHP is an interpreted language, and the execution process includes lexical analysis, grammatical analysis, compilation and execution. 4.PHP can be combined with MySQL for advanced applications such as user registration systems. 5. When debugging PHP, you can use functions such as error_reporting() and var_dump(). 6. Optimize PHP code to use caching mechanisms, optimize database queries and use built-in functions. 7

    PHP vs. Python: Understanding the Differences PHP vs. Python: Understanding the Differences Apr 11, 2025 am 12:15 AM

    PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHP is suitable for web development, with simple syntax and high execution efficiency. 2. Python is suitable for data science and machine learning, with concise syntax and rich libraries.

    Java Program to Find the Volume of Capsule Java Program to Find the Volume of Capsule Feb 07, 2025 am 11:37 AM

    Capsules are three-dimensional geometric figures, composed of a cylinder and a hemisphere at both ends. The volume of the capsule can be calculated by adding the volume of the cylinder and the volume of the hemisphere at both ends. This tutorial will discuss how to calculate the volume of a given capsule in Java using different methods. Capsule volume formula The formula for capsule volume is as follows: Capsule volume = Cylindrical volume Volume Two hemisphere volume in, r: The radius of the hemisphere. h: The height of the cylinder (excluding the hemisphere). Example 1 enter Radius = 5 units Height = 10 units Output Volume = 1570.8 cubic units explain Calculate volume using formula: Volume = π × r2 × h (4

    PHP vs. Python: Core Features and Functionality PHP vs. Python: Core Features and Functionality Apr 13, 2025 am 12:16 AM

    PHP and Python each have their own advantages and are suitable for different scenarios. 1.PHP is suitable for web development and provides built-in web servers and rich function libraries. 2. Python is suitable for data science and machine learning, with concise syntax and a powerful standard library. When choosing, it should be decided based on project requirements.

    PHP vs. Other Languages: A Comparison PHP vs. Other Languages: A Comparison Apr 13, 2025 am 12:19 AM

    PHP is suitable for web development, especially in rapid development and processing dynamic content, but is not good at data science and enterprise-level applications. Compared with Python, PHP has more advantages in web development, but is not as good as Python in the field of data science; compared with Java, PHP performs worse in enterprise-level applications, but is more flexible in web development; compared with JavaScript, PHP is more concise in back-end development, but is not as good as JavaScript in front-end development.

    Create the Future: Java Programming for Absolute Beginners Create the Future: Java Programming for Absolute Beginners Oct 13, 2024 pm 01:32 PM

    Java is a popular programming language that can be learned by both beginners and experienced developers. This tutorial starts with basic concepts and progresses through advanced topics. After installing the Java Development Kit, you can practice programming by creating a simple "Hello, World!" program. After you understand the code, use the command prompt to compile and run the program, and "Hello, World!" will be output on the console. Learning Java starts your programming journey, and as your mastery deepens, you can create more complex applications.

    See all articles