当前位置:网站首页>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.
边栏推荐
- Answer to the second stage of the assignment of "information security management and evaluation" of the higher vocational group of the 2018 Jiangsu Vocational College skills competition
- Use of completable future
- Big coffee gathering | nextarch foundation cloud development meetup is coming
- Multithreading and high concurrency (9) -- other synchronization components of AQS (semaphore, reentrantreadwritelock, exchanger)
- Composition API premise
- 选择商品属性弹框从底部弹出动画效果
- The startup of MySQL installed in RPM mode of Linux system failed
- 点亮显示屏的几个重要步骤
- Matlab tips (29) polynomial fitting plotfit
- Implementation of AVL tree
猜你喜欢
How DHCP router works
How to do sports training in venues?
Config distributed configuration center
Reflection (II)
. Net core accesses uncommon static file types (MIME types)
父组件传递给子组件:Props
关于数据库数据转移的问题,求各位解答下
Role of virtual machine
Circulating tumor cells - here comes abnova's solution
Release notes of JMeter version 5.5
随机推荐
Pass child component to parent component
.net core 访问不常见的静态文件类型(MIME 类型)
RuntimeError: CUDA error: CUBLAS_ STATUS_ ALLOC_ Failed when calling `cublascreate (handle) `problem solving
Databinding exception of kotlin
Composition API 前提
freeswitch拨打分机号源代码跟踪
Release notes of JMeter version 5.5
MySQL user permissions
Fast quantitative, abbkine protein quantitative kit BCA method is coming!
Multidisciplinary integration
Config分布式配置中心
js小练习----分时提醒问候、表单密码显示隐藏效果、文本框焦点事件、关闭广告
Mysql---- import and export & View & Index & execution plan
请教一下,监听pgsql ,怎样可以监听多个schema和table
计算机服务中缺失MySQL服务
PostgreSQL source code (60) transaction system summary
Abnova immunohistochemical service solution
SolidWorks GB Library (steel profile library, including aluminum profile, aluminum tube and other structures) installation and use tutorial (generating aluminum profile as an example)
How can brand e-commerce grow against the trend? See the future here!
MySQL service is missing from computer service