当前位置:网站首页>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
边栏推荐
- Battle Atlas: 12 scenarios detailing the requirements for container safety construction
- What are the principles for distinguishing the security objectives and implementation methods that cloud computing security expansion requires to focus on?
- 高等数学---第八章多元函数微分学1
- PostgreSQL array type, each splice
- [daily training -- Tencent select 50] 231 Power of 2
- Advanced Mathematics - Chapter 8 differential calculus of multivariate functions 1
- Ogre introduction
- requires php ~7.1 -> your PHP version (7.0.18) does not satisfy that requirement
- Xshell connection server changes key login to password login
- ROS机器人更换新雷达需要重新配置哪些参数
猜你喜欢
Introduction and basic use of stored procedures
Mathématiques avancées - - chapitre 8 différenciation des fonctions multivariables 1
2022-7-7 Leetcode 34. Find the first and last positions of elements in a sorted array
Xshell connection server changes key login to password login
Use of polarscatter function in MATLAB
Deep understanding of array related problems in C language
提升树莓派性能的方法
Social responsibility · value co creation, Zhongguancun network security and Information Industry Alliance dialogue, wechat entrepreneur Haitai Fangyuan, chairman Mr. Jiang Haizhou
118. Yanghui triangle
Esp32 construction engineering add components
随机推荐
[fortress machine] what is the difference between cloud fortress machine and ordinary fortress machine?
Final review notes of single chip microcomputer principle
AI人才培育新思路,这场直播有你关心的
Esp32 series column
Social responsibility · value co creation, Zhongguancun network security and Information Industry Alliance dialogue, wechat entrepreneur Haitai Fangyuan, chairman Mr. Jiang Haizhou
数据库系统概论-第一章绪论【概念模型、层次模型和三级模式(外模式、模式、内模式)】
[1] Basic knowledge of ros2 - summary version of operation commands
Detr introduction
带你掌握三层架构(建议收藏)
高等数学---第八章多元函数微分学1
Redis can only cache? Too out!
PHP - laravel cache
2022-7-6 Leetcode27.移除元素——太久没有做题了,为双指针如此狼狈的一天
Flink | multi stream conversion
LED light of single chip microcomputer learning notes
648. Word replacement: the classic application of dictionary tree
Distributed transaction solution
MySQL error 28 and solution
Clion mingw64 Chinese garbled code
DID登陆-MetaMask