当前位置:网站首页>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 .
边栏推荐
- Eliminate gaps around El image images
- Validaterequest= "false" is a "suggestion collection" for what
- 最新MySQL高级SQL语句大全
- 炼金术(6): 可迭代的模型和用例
- Internship: business process introduction
- Modern programming language: rust
- 【无标题】
- Alchemy (1): identify prototype, demo and MVP in project development
- Quickly master grep commands and regular expressions
- [paper reading | deep reading] sdne:structural deep network embedding
猜你喜欢

zotero文献管理工具安装使用

Comprehensive evaluation of free, easy-to-use and powerful open source note taking software

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

深入解析kubernetes controller-runtime

Sword finger offer 61 Shunzi in playing cards

免费、好用、强大的开源笔记软件综合评测

Mongodb- install a mongodb database locally on the windows computer
![Using two stacks to implement queues [two first in first out is first in first out]](/img/de/07297816f1a44d41389bb45d012c80.png)
Using two stacks to implement queues [two first in first out is first in first out]

logging日志的使用
![[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
随机推荐
[untitled]
吴恩达《机器学习》课程总结(11)_支持向量机
最新MySQL高级SQL语句大全
Alchemy (9): simple but not simple, never-ending test -- always_ run
Modern programming language: rust
一个人可以到几家证券公司开户?开户安全吗
A summer party
MYSQL的下载与配置安装
翻译(4): 文本自动完成的匹配规则
股票投资交流群安全吗?入群免费开户靠谱嘛?
打新债注册账户安全吗,会有风险吗?
炼金术(2): 为什么要用issue管理软件
Technical debt wall: a way to make technical debt visible and negotiable
Installation and use of Zotero document management tool
Scu| gait switching and target navigation of micro swimming robot through deep reinforcement learning
Request object, response object, session object
flutter系列之:flutter中的变形金刚Transform
每次启动项目的服务,电脑竟然乖乖的帮我打开了浏览器,100行源码揭秘!
Using two stacks to implement queues [two first in first out is first in first out]
Differences and functions between intranet IP and public IP