Eel version
v0.18.1
Describe the bug
The memory allocated by JavaScript for the data received from a Python Eel-exposed function is never freed.
To Reproduce
Steps to reproduce the behavior:
- Create
main.py:
import eel
count = 0
data = 'x' * 100_000 # 100 KB
@eel.expose
def get_data():
global count
count += 1
return {
'count': count,
'data': data
}
eel.init('.')
eel.start('main.html')
- Create
main.js:
amount_of_iterations = 10_000; // 1GB
(async () => {
for (let i = 0; i < amount_of_iterations; i++) {
const data = await eel.get_data()();
console.log(data.count);
}
})();
- Create
main.html:
<html>
<head>
<script type="text/javascript" src="eel.js"></script>
<script type="text/javascript" src="main.js"></script>
</head>
<body>Check DevTools (F12).</body>
</html>
- Check to have 1 GB of RAM available to be allocated.
- Launch
python main.py.
- Open
DevTools in pressing F12.
- Note in the
Console tab that the logged count has reached 10000, which means the data has been fully transferred.
- Note in the
Memory tab that 1004 MB is allocated.
- Open OS's
System Monitor (Task Manager if applicable to Windows) and note that the allocated memory for the browser process is 1.1 Go.
- Wait as long as you want but maybe at least 1 minute and note that nothing has changed.
Expected behavior
The allocated memory should be freed at some point.
System Information
- OS: Linux Mint 22 Cinnamon (based on Ubuntu 24.04)
- Browser: Chromium 131.0.6778.204 (Official build) for Linux Mint (64 bits)
- Python Distribution: Python.org 3.12.3
Additional context
I discovered this issue because I need to continuously stream data over time to a plot. At some point it makes the app crash, which can be reproduced in the example provided in increasing the allocated memory.
Eel version
v0.18.1
Describe the bug
The memory allocated by JavaScript for the data received from a Python Eel-exposed function is never freed.
To Reproduce
Steps to reproduce the behavior:
main.py:main.js:main.html:python main.py.DevToolsin pressing F12.Consoletab that the logged count has reached 10000, which means the data has been fully transferred.Memorytab that 1004 MB is allocated.System Monitor(Task Managerif applicable to Windows) and note that the allocated memory for the browser process is 1.1 Go.Expected behavior
The allocated memory should be freed at some point.
System Information
Additional context
I discovered this issue because I need to continuously stream data over time to a plot. At some point it makes the app crash, which can be reproduced in the example provided in increasing the allocated memory.