当前位置:网站首页>Causes and solutions of oom (memory overflow)
Causes and solutions of oom (memory overflow)
2022-07-07 07:16:00 【How to solve the problem, only】
One 、 Concept
out of memory (Out Of Memory, abbreviation OOM) It means that there is too much memory in the application system that cannot be recycled or used , Finally, the memory used for program running is larger than the maximum memory provided .
Two 、 Cause
2.1、 Memory leak
Due to the long-term reference of some resources , The garbage collector cannot recycle it , Thus, this resource cannot be released in time , Also known as memory leak . So try not to use all references as strong references , Weak references and soft references can be used where appropriate .
2.2、 Super large objects
Saving multiple consumed memory is too large or when loading a single oversized object , The size of this object exceeds the currently available memory space . For example, query the data in the database , Too many queries at one time , Directly lead to memory overflow . Therefore, if there is too much data in the query database, try to use paging query .
2.3、 All sorts of other reasons
For example, whether there is an dead cycle , Large loops repeat to produce objects , Whether there is a collection object after it is used , Still quoted , Cause unable to clear , Whether improper data structures are used , It leads to too much space and so on .
3、 ... and 、 Solution
3.1、 modify JVM Launch parameters , Add memory directly
JVM By default, the available memory is 64M,Tomcat By default, the available memory is 128MB, For a slightly more complex system, it will not be enough . In a project , Just because the default value used by the startup parameter , Regular report “Out Of Memory” error . therefore ,-Xms,-Xmx( Minimum and maximum size of heap memory ) Parameters must not forget to add .
3.2、 Find out where a memory overflow might occur , And solve
Check the code for dead loops or recursive calls .
Check if there is a large loop that repeatedly generates new object entities .
Check the database query , Is there a query to get all the data .
Check List、Map Wait until the collection object is used , Problems not cleared .
Use the memory view tool to dynamically view memory usage .
Four 、Xmn、Xms、Xmx、Xss Parameter difference - Meaning and understanding
First ,-Xmn、-Xms、-Xmx、-Xss All are JVM Configuration parameters for memory , We can modify these parameters according to different needs , To achieve the best effect of running the program .
4.1、-Xms、-Xmx
-Xms、-Xmx Allocation is used to set the minimum and maximum size of the process heap memory .
4.2、-Xmn
-Xmn Used to set the size of the Cenozoic in the heap . Through this value, we can also get the size of the old generation :-Xmx subtract -Xmn
4.3、-Xss
-Xss Set the amount of memory each thread can use .
In the same physical memory , Reducing this value can generate more threads . Of course, the operating system has a limit on the number of threads in a process , Can't generate... Indefinitely , Experience is in 3000~5000 about .
In addition to these configurations ,JVM There are a lot of configurations , Common ones are as follows :
-XX:PermSize、-XX:MaxPermSize
Allocation is used to set the minimum and maximum size of the permanent generation .Java 8 Later, the method area was removed , Instead, the local meta space Metaspace, Size by -XX:MetaspaceSize and -XX:MaxMetaspaceSize Adjust the .
-XX:MaxTenuringThreshold
Set the survival times of the old generation . If it is 0, Then directly skip the new generation and enter the old generation .
-XX:NewRatio
Set the ratio of the old generation to the new generation , For example, the value is 3, It means that the ratio of Cenozoic generation to old generation is 1:3.
边栏推荐
- Databinding exception of kotlin
- 计算机服务中缺失MySQL服务
- 软件验收测试
- Common function detect_ image/predict
- from . onnxruntime_ pybind11_ State Import * noqa ddddocr operation error
- Master-slave replication principle of MySQL
- $parent(获取父组件) 和 $root(获取根组件)
- js小练习----分时提醒问候、表单密码显示隐藏效果、文本框焦点事件、关闭广告
- Special behavior of main function in import statement
- 父组件传递给子组件:Props
猜你喜欢
How DHCP router works
弹性布局(二)
Graduation design game mall
Pass child component to parent component
Maze games based on JS
AVL树的实现
计算机服务中缺失MySQL服务
2018 Jiangsu Vocational College skills competition vocational group "information security management and evaluation" competition assignment
子组件传递给父组件
mips uclibc 交叉编译ffmpeg,支持 G711A 编解码
随机推荐
Abnova membrane protein lipoprotein technology and category display
leetcode 509. Fibonacci number
Apache AB stress test
How does an enterprise manage data? Share the experience summary of four aspects of data governance
toRefs API 与 toRef Api
$refs: get the element object or sub component instance in the component:
Introduction to abnova's in vitro mRNA transcription workflow and capping method
Mysql---- import and export & View & Index & execution plan
请教一个问题,flink oracle cdc,读取一个没有更新操作的表,隔十几秒就重复读取全量数据
Graduation design game mall
Big coffee gathering | nextarch foundation cloud development meetup is coming
Advantages of using net core / why
Libcurl returns curlcode description
A slow SQL drags the whole system down
PostgreSQL source code (60) transaction system summary
LC 面试题 02.07. 链表相交 & LC142. 环形链表II
. Net core accesses uncommon static file types (MIME types)
js小练习
詳解機器翻譯任務中的BLEU
Bus消息总线