当前位置:网站首页>Introduction to memory model of JVM
Introduction to memory model of JVM
2022-06-28 00:37:00 【xmh-sxh-1314】
1. Pile up (Heap)
Heap memory is common to all threads , It can be divided into two parts : The young and the old . Image below Perm It stands for permanent generation , But note that permanent generations are not part of heap memory , meanwhile jdk1.8 Then the permanent generation will be removed .
The pile is java The largest area of memory managed by a virtual machine , It is also the memory area shared by various threads , This memory area stores object instances and arrays ( But not all object instances are in the heap ). Its size passes through -Xms( minimum value ) and -Xmx( Maximum ) Parameter setting ( The maximum and minimum values should be less than 1G), The former is the minimum memory requested at startup , The default is the physical memory of the operating system 1/64, The latter is JVM Maximum memory that can be requested , Default to physical memory 1/4, By default, when the empty heap memory is less than 40% when ,JVM Will increase heap memory to -Xmx Specified size , It can be done by -XX:MinHeapFreeRation= To specify the ratio column ; When the free heap memory is greater than 70% when ,JVM Will reduce the size of heap memory to -Xms Specified size , It can be done by XX:MaxHeapFreeRation= To specify the ratio column , Of course, to avoid frequent adjustments at runtime Heap Size , Usually -Xms And -Xmx Set the value of to the same . Heap memory = The new generation + Old generation + Lasting generation . When we recycle , We tend to divide heap memory into new and old generations ( Size ratio 1:2), In the Cenozoic, there are Eden and Survivor0,Survivor1 form , The ratio of the three is 8:1:1, The recycling mechanism of the new generation adopts replication algorithm , stay Minor GC When , We all leave a living area for living objects , The real area is Eden+ One of the survival areas , When our object is older than a certain age ( Default 15, It can be set by parameters ), Will put the object into the old generation , Of course, large objects will directly enter the older generation . The recycling algorithm adopted by the older generation is the tag sorting algorithm .
2. Method area (Method Area)
Method area also known as ” Forever “, It is used to store the class information loaded by the virtual machine 、 Constant 、 Static variables 、 Is an area of memory Shared by each thread . The default minimum value is 16MB, The maximum value is 64MB(64 position JVM Because the pointer expands , The default is 85M), Can pass -XX:PermSize and -XX:MaxPermSize Parameters limit the size of the method area . It's a continuous heap space , The permanent generation of garbage collection is with the elderly generation (old generation) Tied together , So no matter who is full , Will trigger permanent generation and old generation garbage collection . however , An obvious problem is , When JVM The loaded class information capacity exceeds the parameter -XX:MaxPermSize When the set value , Application will report OOM Error of . The parameter is passed through -XX:PermSize and -XX:MaxPermSize To set .
3. Virtual machine stack (JVM Stack)
Describe the java Memory model for method execution : When each method is executed, a ” Stack frame ”, Used to store local variables ( Including the parameters )、 Stack operation 、 Method exit information . Each method is called to the finished procedure , This corresponds to the process of a stack frame in the virtual machine stack from push to push . The declaration cycle is the same as the thread , Threads are private . Stack frame consists of three parts : Local variable region 、 The stack of operands 、 Frame data area . Local variable areas are organized in units of one word length 、 from 0 Array to start counting , Same as the local variable area , The stack of operands is also organized into an array of word lengths . But unlike the former , It's not accessed by index , It's accessed by pushing and pushing , It can be seen as a storage area for temporary data . In addition to the local variable area and operand stack ,java Stack frames also need some data to support constant pool parsing 、 Normal method return and exception dispatch mechanism . These data are stored in java In the frame data area of the stack frame .
Local variable table : It stores all kinds of basic data types known by the compiler 、 Object reference ( Reference pointer , Not the object itself ), among 64 A length of long and double Type of data is occupied 2 Space of local variables , The rest of the data types only account for 1 individual . The memory space required for local variables is allocated during compilation , When entering a method , How many local variables should be allocated in the stack frame is completely determined , The stack frame does not change the size space of the local variable table during runtime .
4. Native Method Stack (Native Stack)
Similar to virtual machine stack , The difference is that the virtual machine stack performs java Method service , The local method stack is for Native Method service .( Stack space is much smaller than heap space )
5. Program counter (PC Register)
It's the smallest memory area , Its function is the line number indicator of bytecode executed by the current thread , In the virtual machine model , The bytecode interpreter works by changing the value of this counter to select the next bytecode instruction to execute , Branch 、 loop 、 exception handling 、 Thread recovery and other basic functions need to rely on counters to complete .
6. Direct memory
Direct memory is not part of virtual machine memory , Neither Java Memory area defined in virtual machine specification .jdk1.4 New to China NIO, Introduced channel and buffer IO The way , It can call Native Method to allocate out of heap memory directly , This out of heap memory is native memory , Does not affect the size of heap memory .
边栏推荐
猜你喜欢
![[Reading Abstract] what is wrong with English Reading Teaching in schools-- Empiricism and the PK of cognitive science](/img/7b/8b3619d7726fdaa58da46b0c8451a4.png)
[Reading Abstract] what is wrong with English Reading Teaching in schools-- Empiricism and the PK of cognitive science

JVM的内存模型简介

【无标题】

logging日志的使用

Squid代理服务器(缓存加速之Web缓存层)

MySQL分表查询之Merge存储引擎实现

MySQL企业级参数调优实践分享

数仓的字符截取三胞胎:substrb、substr、substring

【论文阅读|深读】SDNE:Structural Deep Network Embedding

技术的极限(11): 有趣的编程
随机推荐
Alchemy (8): parallel development and release
Understand the basic structure of wechat applet project
吴恩达《机器学习》课程总结(13)_聚类
request对象、response对象、session对象
Summary of wuenda's machine learning course (11)_ Support vector machine
Using two stacks to implement queues [two first in first out is first in first out]
What are the ways to combine the points system with marketing activities
Arduino UNO通过电容的直接检测实现简易触摸开关
Squid代理服务器(缓存加速之Web缓存层)
Promise是什么
深入解析kubernetes controller-runtime
The development of the Internet provides new solutions for industrial transformation
炼金术(9): 简约而不简单,永不停歇的测试 -- always_run
吴恩达《机器学习》课程总结(11)_支持向量机
Count prime [enumeration - > space for time]
Leetcode 720. 词典中最长的单词(为啥感觉这道题很难?)
哪个证券公司炒股开户是比较好,更安全靠谱的
炼金术(8): 开发和发布的并行
本地可视化工具连接阿里云centOS服务器的redis
HCIP/HCIE Routing&Switching / Datacom备考宝典系列(十九)PKI知识点全面总结(公钥基础架构)