当前位置:网站首页>The difference between memory overflow and memory leak
The difference between memory overflow and memory leak
2022-07-07 13:51:00 【Full stack programmer webmaster】
out of memory out of memory, When a program requests memory , Not enough memory for it , appear out of memory; Like applying for a integer, But save it long Number that can be saved , That's memory overflow .
Memory leak memory leak, Refers to the program after applying for memory , Unable to free requested memory space , The harm of a memory leak can be ignored , But the memory leak has serious consequences , No matter how much memory , Sooner or later it will be taken up .
memory leak Will eventually lead to out of memory!
Memory overflow is when you ask for more memory than the system can give you , The system can't meet the demand , So there's overflow .
A memory leak is when you apply to the system to allocate memory for use (new), But they don't return it after using it (delete), As a result, you can't access the memory you applied for ( Maybe you lost its address ), And the system can't assign it again to the program it needs . A plate can only hold 4 A fruit , You put on 5 individual , As a result, I fell to the ground and couldn't eat . This is overflow ! Like stacks , When the stack is full, it will cause space overflow , Call for overflow , When the stack is empty, it will cause space overflow , It's called underflow . The memory allocated is not enough to put down the sequence of data items , It's called a memory overflow .
Classify in the way that they happen , Memory leaks can be divided into 4 class :
1. Frequent memory leaks . Code with memory leaks will be executed multiple times to , Each time it is executed, it will cause a memory leak . 2. Occasional memory leak . Code that has a memory leak only happens under certain circumstances or operating procedures . Recurrent and episodic are relative . For a particular environment , What happens occasionally may become what happens frequently . So test environment and test method are very important to detect memory leak . 3. One time memory leak . Code with a memory leak will only be executed once , Or because of algorithm flaws , There will always be a single memory leak . such as , Allocate memory in the class's constructor , In the destructor, the memory is not freed , So memory leaks only happen once . 4. Implicit memory leaks . Program in the process of running the allocation of memory , But don't release memory until the end . Strictly speaking, there is no memory leak , Because eventually the program frees up all of the requested memory . But for a server program , It takes a few days to run , Weeks or even months , Not releasing memory in time can also lead to the eventual exhaustion of all the system's memory . therefore , We call such memory leaks implicit memory leaks .
From the point of view of the user using the program , Memory leaks themselves don't do any harm , As a general user , There is no memory leak at all . The real danger is the accumulation of memory leaks , This will eventually consume all the memory of the system . From this perspective , One time memory leaks don't hurt , Because it doesn't pile up , The implicit memory leak is very harmful , Because it is more difficult to detect than frequent and accidental memory leaks
Focus on the following points : 1. Check the database query , Is there a query to get all the data . Generally speaking , If you take 100000 records to memory at a time , May cause memory overflow . This problem is more hidden , Before going online , There is less data in the database , It's not easy to have problems , After the launch , There's a lot of data in the database , A query may cause memory overflow . So for Try to query the database by paging .
2. Check the code for dead loops or recursive calls .
3. Check if there is a large loop that repeatedly generates new object entities .
4. Check the database query , Is there a query to get all the data . Generally speaking , If you take 100000 records to memory at a time , May cause memory overflow . This problem is more hidden , Before going online , There is less data in the database , It's not easy to have problems , After the launch , There's a lot of data in the database , A query may cause memory overflow . Therefore, the database query should be paged as much as possible .
5. Check List、MAP Wait until the collection object is used , Problems not cleared .List、MAP The collection object will always have a reference to the object , So that these objects cannot be GC Recycling .
Step four , Use the memory view tool to dynamically view memory usage
Publisher : Full stack programmer stack length , Reprint please indicate the source :https://javaforall.cn/113287.html Link to the original text :https://javaforall.cn
边栏推荐
- Leecode3. Longest substring without repeated characters
- LeetCode_二分搜索_中等_153.寻找旋转排序数组中的最小值
- Esp32 series column
- Getting started with cinnamon applet
- Mathématiques avancées - - chapitre 8 différenciation des fonctions multivariables 1
- Data refresh of recyclerview
- How far can it go to adopt a cow by selling the concept to the market?
- requires php ~7.1 -> your PHP version (7.0.18) does not satisfy that requirement
- AI人才培育新思路,这场直播有你关心的
- 2022-7-6 使用SIGURG来接受外带数据,不知道为什么打印不出来
猜你喜欢
Thread pool reject policy best practices
Realize the IP address home display function and number home query
Leetcode simple question sharing (20)
Navicat运行sql文件导入数据不全或导入失败
作战图鉴:12大场景详述容器安全建设要求
2022-7-6 Leetcode 977. Square of ordered array
2022-7-6 Leetcode27.移除元素——太久没有做题了,为双指针如此狼狈的一天
[fortress machine] what is the difference between cloud fortress machine and ordinary fortress machine?
Write it down once Net a new energy system thread surge analysis
Best practice | using Tencent cloud AI willingness to audit as the escort of telephone compliance
随机推荐
Split screen bug notes
2022-7-7 Leetcode 844.比较含退格的字符串
FCOS3D label assignment
Supply chain supply and demand estimation - [time series]
Xshell connection server changes key login to password login
Error lnk2019: unresolved external symbol
TPG x AIDU | AI leading talent recruitment plan in progress!
Centso7 OpenSSL error Verify return code: 20 (unable to get local issuer certificate)
如何让join跑得更快?
2022-7-6 Leetcode27.移除元素——太久没有做题了,为双指针如此狼狈的一天
Leecode3. Longest substring without repeated characters
Navicat运行sql文件导入数据不全或导入失败
Indoor ROS robot navigation commissioning record (experience in selecting expansion radius)
Introduction and basic use of stored procedures
[etc.] what are the security objectives and implementation methods that cloud computing security expansion requires to focus on?
What parameters need to be reconfigured to replace the new radar of ROS robot
call undefined function openssl_ cipher_ iv_ length
Help tenants
2022-7-6 beginner redis (I) download, install and run redis under Linux
Detr introduction