当前位置:网站首页>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.
边栏推荐
- How to model and simulate the target robot [mathematical / control significance]
- Readonly read only
- Exception of DB2 getting table information: caused by: com ibm. db2.jcc. am. SqlException: [jcc][t4][1065][12306][4.25.13]
- 【mysqld】Can't create/write to file
- Anr principle and Practice
- Software acceptance test
- 虚拟机的作用
- FullGC问题分析及解决办法总结
- MOS tube parameters μ A method of Cox
- The currently released SKU (sales specification) information contains words that are suspected to have nothing to do with baby
猜你喜欢
随机推荐
PostgreSQL source code (59) analysis of transaction ID allocation and overflow judgment methods
2018 Jiangsu Vocational College skills competition vocational group "information security management and evaluation" competition assignment
Introduction to abnova's in vitro mRNA transcription workflow and capping method
oracle如何备份索引
Distributed ID solution
修改Jupyter Notebook文件路径
Stack Title: nesting depth of valid parentheses
关于二进制无法精确表示小数
"Xiaodeng in operation and maintenance" meets the compliance requirements of gdpr
JDBC database connection pool usage problem
Pass parent component to child component: props
SQLMAP使用教程(四)实战技巧三之绕过防火墙
LC interview question 02.07 Linked list intersection & lc142 Circular linked list II
【mysqld】Can't create/write to file
【JDBC以及内部类的讲解】
软件验收测试
How to model and simulate the target robot [mathematical / control significance]
Please tell me how to monitor multiple schemas and tables by listening to PgSQL
Four goals for the construction of intelligent safety risk management and control platform for hazardous chemical enterprises in Chemical Industry Park
Readonly read only









