当前位置:网站首页>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 .
边栏推荐
- 投资场内ETF基金是靠谱吗,场内ETF基金安全吗
- Mise en œuvre du pool de Threads: les sémaphores peuvent également être considérés comme de petites files d'attente
- 券商买股票用什么app是比较好的,比较安全的
- 炼金术(9): 简约而不简单,永不停歇的测试 -- always_run
- logging日志的使用
- 吴恩达《机器学习》课程总结(11)_支持向量机
- HCIP/HCIE Routing&Switching / Datacom备考宝典系列(十九)PKI知识点全面总结(公钥基础架构)
- Matlab基本函数 length函数
- 炼金术(8): 开发和发布的并行
- 供应链高效管理供应商
猜你喜欢

Arduino UNO通过电容的直接检测实现简易触摸开关
![[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

zotero文献管理工具安装使用
![计数质数[枚举 -> 空间换时间]](/img/11/c52e1dfce8e35307c848d12ccc6454.png)
计数质数[枚举 -> 空间换时间]
![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]

Introduction to data warehouse

MongoDB-在windows电脑本地安装一个mongodb的数据库

Chenyun pytorch learning notes_ Build RESNET with 50 lines of code

MATLB|基于复杂网络的配电系统微电网优化配置
最新MySQL高级SQL语句大全
随机推荐
Translation (4): matching rules for automatic text completion
MATLB|改进的前推回代法求解低压配电网潮流
ValidateRequest=”false” 是做什么的「建议收藏」
每次启动项目的服务,电脑竟然乖乖的帮我打开了浏览器,100行源码揭秘!
線程池實現:信號量也可以理解成小等待隊列
积分体系和营销活动结合在一起有哪些玩法
Logging log usage
SQL reported an unusual error, which confused the new interns
RecyclerView实现分组效果,多种实现方式
Alchemy (1): identify prototype, demo and MVP in project development
Is the securities registration account safe? Is there any risk?
Using two stacks to implement queues [two first in first out is first in first out]
Thread pool implementation: semaphores can also be understood as small waiting queues
Sword finger offer 65 Add without adding, subtracting, multiplying, dividing
NDSS 2022 received list
认识微信小程序项目的基本组成结构
Request object, response object, session object
mysql数据库旅游管理系统_JSP+MySQL基于ssm的旅游管理系统[通俗易懂]
Redis主从复制、哨兵模式、集群的概述与搭建
互联网的发展为产业的变革和转型提供了新的解决方案