Possible Memory Leak
See original GitHub issueI have a very simple program that periodically retrieves an image from an IP camera. I’ve noticed that the working set of this program grows monotonically. I’ve written a small program that reproduces the issue.
import requests
from memory_profiler import profile
@profile
def lol():
print "sending request"
r = requests.get('http://cachefly.cachefly.net/10mb.test')
print "reading.."
with open("test.dat", "wb") as f:
f.write(r.content)
print "Finished..."
if __name__=="__main__":
for i in xrange(100):
print "Iteration", i
lol()
The memory usage is printed at the end of each iteration. This is the sample output. ** Iteration 0 **
Iteration 0
sending request
reading..
Finished...
Filename: test.py
Line # Mem usage Increment Line Contents
================================================
5 12.5 MiB 0.0 MiB @profile
6 def lol():
7 12.5 MiB 0.0 MiB print "sending request"
8 35.6 MiB 23.1 MiB r = requests.get('http://cachefly.cachefly.net/10mb.test')
9 35.6 MiB 0.0 MiB print "reading.."
10 35.6 MiB 0.0 MiB with open("test.dat", "wb") as f:
11 35.6 MiB 0.0 MiB f.write(r.content)
12 35.6 MiB 0.0 MiB print "Finished..."
** Iteration 1 **
Iteration 1
sending request
reading..
Finished...
Filename: test.py
Line # Mem usage Increment Line Contents
================================================
5 35.6 MiB 0.0 MiB @profile
6 def lol():
7 35.6 MiB 0.0 MiB print "sending request"
8 36.3 MiB 0.7 MiB r = requests.get('http://cachefly.cachefly.net/10mb.test')
9 36.3 MiB 0.0 MiB print "reading.."
10 36.3 MiB 0.0 MiB with open("test.dat", "wb") as f:
11 36.3 MiB 0.0 MiB f.write(r.content)
12 36.3 MiB 0.0 MiB print "Finished..."
The memory usage does not grow with every iteration, but it does continue to creep up with requests.get
being the culprit that increases memory usage.
By ** Iteration 99 ** this is what the memory profile looks like.
Iteration 99
sending request
reading..
Finished...
Filename: test.py
Line # Mem usage Increment Line Contents
================================================
5 40.7 MiB 0.0 MiB @profile
6 def lol():
7 40.7 MiB 0.0 MiB print "sending request"
8 40.7 MiB 0.0 MiB r = requests.get('http://cachefly.cachefly.net/10mb.test')
9 40.7 MiB 0.0 MiB print "reading.."
10 40.7 MiB 0.0 MiB with open("test.dat", "wb") as f:
11 40.7 MiB 0.0 MiB f.write(r.content)
12 40.7 MiB 0.0 MiB print "Finished..."
Memory usage doesn’t drop unless the program is terminated.
Is there a bug or is it user error?
Issue Analytics
- State:
- Created 10 years ago
- Comments:54 (36 by maintainers)
Top Results From Across the Web
My system scan results says "An active process has a possible ...
My system scan keeps telling me "An active process has a possible memory leak (Microsoft EdgeCP.exe)
Read more >Memory leak / Handle leak | Firefox Support Forum
Here is a fairly simple explanation for a memory leak: A Memory leak occurs when your computer closes an open program and that...
Read more >Memory leak - Wikipedia
In computer science, a memory leak is a type of resource leak that occurs when a computer program incorrectly manages memory allocations in...
Read more >How To Fix Windows 10 Memory Leaks - Online Tech Tips
How To Fix Windows 10 Memory Leaks · Restart Your PC · Use Windows Memory Diagnostic to Fix a Windows 10 Memory Leak...
Read more >Memory leak - OWASP Foundation
Most memory leaks result in general software reliability problems, but if an attacker can intentionally trigger a memory leak, the attacker might be...
Read more >
Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free
Top Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
so, what is the solution of this issue ?
There’s been no further complaints of this arising and I think we’ve done our best on this. I’m happy to reopen it and reinvestigate if necessary