当前位置:网站首页>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
边栏推荐
- 2022-7-6 初学redis(一)在 Linux 下下载安装并运行 redis
- Distributed transaction solution
- toRaw和markRaw
- 【面试高频题】难度 2.5/5,简单结合 DFS 的 Trie 模板级运用题
- 干货|总结那些漏洞工具的联动使用
- LeetCode_ Binary search_ Medium_ 153. Find the minimum value in the rotation sort array
- QQ medicine, Tencent ticket
- Flink | 多流转换
- 属性关键字Aliases,Calculated,Cardinality,ClientName
- Redis只能做缓存?太out了!
猜你喜欢
Co create a collaborative ecosystem of software and hardware: the "Joint submission" of graphcore IPU and Baidu PaddlePaddle appeared in mlperf
.net core 关于redis的pipeline以及事务
Supply chain supply and demand estimation - [time series]
得物客服热线的演进之路
Advanced Mathematics - Chapter 8 differential calculus of multivariate functions 1
Esp32 ① compilation environment
How to make join run faster?
Realize the IP address home display function and number home query
Help tenants
Milkdown control icon
随机推荐
华为镜像地址
1、深拷贝 2、call apply bind 3、for of for in 区别
Did login metamask
Help tenants
Learning breakout 2 - about effective learning methods
[1] Basic knowledge of ros2 - summary version of operation commands
请问指南针股票软件可靠吗?交易股票安全吗?
Battle Atlas: 12 scenarios detailing the requirements for container safety construction
566. 重塑矩阵
ROS机器人更换新雷达需要重新配置哪些参数
2022-7-6 使用SIGURG来接受外带数据,不知道为什么打印不出来
High end for 8 years, how is Yadi now?
接口自动化测试-接口间数据依赖问题解决
[dark horse morning post] Huawei refutes rumors about "military master" Chen Chunhua; Hengchi 5 has a pre-sale price of 179000 yuan; Jay Chou's new album MV has played more than 100 million in 3 hours
最佳实践 | 用腾讯云AI意愿核身为电话合规保驾护航
118. Yanghui triangle
Write it down once Net a new energy system thread surge analysis
Is it safe to open an account online now? Which securities company should I choose to open an account online?
LIS longest ascending subsequence problem (dynamic programming, greed + dichotomy)
566. Reshaping the matrix