当前位置:网站首页>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 .
边栏推荐
猜你喜欢
【无标题】
MySQL enterprise parameter tuning practice sharing
MongoDB-在windows电脑本地安装一个mongodb的数据库
数仓的字符截取三胞胎:substrb、substr、substring
Mongodb- install a mongodb database locally on the windows computer
Logging log usage
数据仓库入门介绍
现代编程语言:zig
HCIP/HCIE Routing&Switching / Datacom备考宝典系列(十九)PKI知识点全面总结(公钥基础架构)
Leetcode 720. The longest word in the dictionary
随机推荐
Alchemy (7): how to solve problems? Only reconstruction
Summary of wuenda's machine learning course (14)_ Dimensionality reduction
NDSS 2022 received list
logging日志的使用
MongoDB-在windows电脑本地安装一个mongodb的数据库
MATLB|基于复杂网络的配电系统微电网优化配置
Every time I started the service of the project, the computer helped me open the browser, revealing the 100 lines of source code!
Startup and shutdown of Oracle Database
[Reading Abstract] what is wrong with English Reading Teaching in schools-- Empiricism and the PK of cognitive science
Matlb| optimal configuration of microgrid in distribution system based on complex network
最新MySQL高级SQL语句大全
投资场内ETF基金是靠谱吗,场内ETF基金安全吗
Deployment and test of crtmp live video server
单片机之IIC通信协议「建议收藏」
Scu| gait switching and target navigation of micro swimming robot through deep reinforcement learning
炼金术(6): 可迭代的模型和用例
Which securities company is better and safer to open an account for stock speculation
Modern programming language: rust
【论文阅读|深读】SDNE:Structural Deep Network Embedding
MySQL企业级参数调优实践分享