Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Memory leak in insert_pdf since version 1.18.15 #1351

Closed
maxocub opened this issue Oct 28, 2021 · 12 comments
Closed

Memory leak in insert_pdf since version 1.18.15 #1351

maxocub opened this issue Oct 28, 2021 · 12 comments
Assignees
Labels
bug resolved fixed / implemented / answered

Comments

@maxocub
Copy link

maxocub commented Oct 28, 2021

Describe the bug

When I upgraded to version 1.18.15, I experienced an important memory leak.

I am using only insert_pdf to add one coverpage to a lot of PDF files.

To Reproduce

I don't have a code snippet, but if you simply run insert_pdf multiple times, I think you'll be able to reproduce.

Your configuration

I am on Debian 11

>>> print(sys.version, "\n", sys.platform, "\n", fitz.__doc__)
3.6.15 (default, Oct 15 2021, 11:06:43) 
[GCC 10.2.1 20210110] 
 linux 
 
PyMuPDF 1.18.15: Python bindings for the MuPDF 1.18.0 library.
Version date: 2021-07-10 00:00:01.
Built for Python 3.6 on linux (64-bit).

I also tested:

PyMuPDF 1.18.19: Python bindings for the MuPDF 1.18.0 library.
Version date: 2021-09-16 16:45:29.
Built for Python 3.6 on linux (64-bit).

And:

PyMuPDF 1.19.1: Python bindings for the MuPDF 1.19.0 library.
Version date: 2021-10-23 00:00:01.
Built for Python 3.6 on linux (64-bit).

Additional context

Here is the output of tracemalloc for a hundred calls of insert_pdf for different versions.

First, version 1.18.14, where there is no memory leak:

/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=250 KiB (+250 KiB), count=597 (+597), average=428 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=251 KiB (+250 KiB), count=598 (+597), average=429 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=261 KiB (+260 KiB), count=599 (+597), average=446 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=550 KiB (+549 KiB), count=1148 (+1145), average=490 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=728 KiB (+727 KiB), count=1697 (+1693), average=439 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=767 KiB (+765 KiB), count=1732 (+1727), average=454 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=1462 KiB (+1460 KiB), count=3103 (+3097), average=483 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=267 KiB (+265 KiB), count=604 (+597), average=453 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=279 KiB (+276 KiB), count=606 (+598), average=471 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=780 KiB (+777 KiB), count=2252 (+2242), average=355 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=264 KiB (+260 KiB), count=608 (+597), average=445 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=894 KiB (+890 KiB), count=1705 (+1693), average=537 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=770 KiB (+765 KiB), count=1740 (+1727), average=453 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=265 KiB (+260 KiB), count=611 (+597), average=444 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=636 KiB (+631 KiB), count=1708 (+1693), average=381 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=266 KiB (+261 KiB), count=613 (+597), average=445 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=281 KiB (+276 KiB), count=614 (+597), average=469 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=307 KiB (+302 KiB), count=615 (+597), average=512 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=1324 KiB (+1318 KiB), count=2809 (+2790), average=483 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=280 KiB (+273 KiB), count=617 (+597), average=464 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=257 KiB (+250 KiB), count=618 (+597), average=425 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=257 KiB (+250 KiB), count=619 (+597), average=425 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=269 KiB (+261 KiB), count=620 (+597), average=444 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=281 KiB (+273 KiB), count=621 (+598), average=464 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=640 KiB (+631 KiB), count=1718 (+1693), average=381 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=258 KiB (+250 KiB), count=623 (+597), average=425 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=736 KiB (+727 KiB), count=1720 (+1693), average=438 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=258 KiB (+248 KiB), count=643 (+615), average=411 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=270 KiB (+260 KiB), count=626 (+597), average=442 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=508 KiB (+497 KiB), count=1175 (+1145), average=442 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=284 KiB (+273 KiB), count=628 (+597), average=462 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=260 KiB (+250 KiB), count=629 (+597), average=424 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=313 KiB (+302 KiB), count=630 (+597), average=508 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=643 KiB (+631 KiB), count=1727 (+1693), average=381 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=705 KiB (+694 KiB), count=1727 (+1693), average=418 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=565 KiB (+553 KiB), count=1180 (+1145), average=490 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=565 KiB (+553 KiB), count=1181 (+1145), average=490 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=306 KiB (+293 KiB), count=634 (+597), average=494 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=261 KiB (+248 KiB), count=653 (+615), average=410 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=307 KiB (+293 KiB), count=636 (+597), average=494 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=263 KiB (+250 KiB), count=637 (+597), average=423 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=262 KiB (+248 KiB), count=657 (+616), average=409 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=279 KiB (+265 KiB), count=640 (+597), average=447 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=263 KiB (+248 KiB), count=659 (+615), average=409 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=1475 KiB (+1460 KiB), count=3142 (+3097), average=481 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=276 KiB (+260 KiB), count=643 (+597), average=439 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=309 KiB (+293 KiB), count=644 (+597), average=491 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=265 KiB (+250 KiB), count=644 (+597), average=422 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=281 KiB (+265 KiB), count=645 (+597), average=446 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=277 KiB (+261 KiB), count=646 (+597), average=440 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=266 KiB (+250 KiB), count=647 (+597), average=422 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=265 KiB (+248 KiB), count=666 (+615), average=408 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=282 KiB (+265 KiB), count=649 (+597), average=445 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=744 KiB (+727 KiB), count=1746 (+1693), average=437 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=908 KiB (+890 KiB), count=1747 (+1693), average=532 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=650 KiB (+631 KiB), count=1749 (+1694), average=380 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=712 KiB (+694 KiB), count=1750 (+1693), average=417 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=796 KiB (+777 KiB), count=2300 (+2242), average=354 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=746 KiB (+727 KiB), count=1752 (+1693), average=436 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=714 KiB (+694 KiB), count=1753 (+1693), average=417 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=322 KiB (+302 KiB), count=658 (+597), average=501 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=294 KiB (+273 KiB), count=659 (+597), average=457 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=592 KiB (+571 KiB), count=1208 (+1145), average=502 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=574 KiB (+553 KiB), count=1209 (+1146), average=487 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=303 KiB (+281 KiB), count=662 (+597), average=468 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=1483 KiB (+1460 KiB), count=3163 (+3097), average=480 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=2379 KiB (+2356 KiB), count=5597 (+5530), average=435 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=297 KiB (+273 KiB), count=665 (+597), average=457 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=572 KiB (+549 KiB), count=1214 (+1145), average=483 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=300 KiB (+276 KiB), count=667 (+597), average=460 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=1484 KiB (+1460 KiB), count=3168 (+3097), average=480 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=274 KiB (+250 KiB), count=669 (+597), average=420 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=318 KiB (+293 KiB), count=670 (+597), average=486 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=306 KiB (+281 KiB), count=671 (+597), average=467 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=327 KiB (+302 KiB), count=672 (+597), average=499 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=287 KiB (+260 KiB), count=673 (+597), average=436 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=288 KiB (+261 KiB), count=674 (+597), average=437 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=320 KiB (+293 KiB), count=675 (+597), average=486 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=1487 KiB (+1460 KiB), count=3176 (+3097), average=480 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=1488 KiB (+1460 KiB), count=3177 (+3097), average=480 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=722 KiB (+694 KiB), count=1774 (+1693), average=417 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=309 KiB (+281 KiB), count=679 (+597), average=466 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=756 KiB (+727 KiB), count=1776 (+1694), average=436 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=582 KiB (+553 KiB), count=1229 (+1145), average=485 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=583 KiB (+553 KiB), count=1230 (+1145), average=485 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=601 KiB (+571 KiB), count=1231 (+1145), average=500 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=601 KiB (+571 KiB), count=1232 (+1145), average=500 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=584 KiB (+553 KiB), count=1233 (+1145), average=485 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=528 KiB (+497 KiB), count=1234 (+1145), average=439 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=281 KiB (+250 KiB), count=687 (+597), average=419 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=663 KiB (+631 KiB), count=1784 (+1693), average=381 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=663 KiB (+631 KiB), count=1785 (+1693), average=381 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=726 KiB (+694 KiB), count=1786 (+1693), average=416 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=281 KiB (+248 KiB), count=709 (+615), average=406 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=294 KiB (+261 KiB), count=692 (+597), average=435 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=923 KiB (+890 KiB), count=1789 (+1693), average=528 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=531 KiB (+497 KiB), count=1242 (+1145), average=438 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=583 KiB (+549 KiB), count=1243 (+1145), average=480 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=665 KiB (+631 KiB), count=1792 (+1693), average=380 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4315: size=800 KiB (+765 KiB), count=1827 (+1727), average=448 B

Version 1.18.15, first apparition of the memory leak:

/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=261 KiB (+261 KiB), count=597 (+597), average=448 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=563 KiB (+302 KiB), count=1194 (+597), average=482 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=813 KiB (+250 KiB), count=1791 (+597), average=465 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=1590 KiB (+777 KiB), count=4033 (+2242), average=404 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=1870 KiB (+281 KiB), count=4630 (+597), average=414 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=2647 KiB (+777 KiB), count=6872 (+2242), average=394 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=3278 KiB (+631 KiB), count=8565 (+1693), average=392 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=4596 KiB (+1318 KiB), count=11355 (+2790), average=414 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=4898 KiB (+302 KiB), count=11952 (+597), average=420 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=5199 KiB (+302 KiB), count=12549 (+597), average=424 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=5472 KiB (+273 KiB), count=13146 (+597), average=426 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=6021 KiB (+549 KiB), count=14291 (+1145), average=431 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=6294 KiB (+273 KiB), count=14889 (+598), average=433 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=6988 KiB (+694 KiB), count=16582 (+1693), average=432 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=7765 KiB (+777 KiB), count=18824 (+2242), average=422 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=8013 KiB (+248 KiB), count=19438 (+615), average=422 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=8562 KiB (+549 KiB), count=20583 (+1145), average=426 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=9110 KiB (+549 KiB), count=21728 (+1145), average=429 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=9360 KiB (+250 KiB), count=22325 (+597), average=429 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=9857 KiB (+497 KiB), count=23470 (+1145), average=430 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=10130 KiB (+273 KiB), count=24067 (+597), average=431 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=10.2 MiB (+273 KiB), count=24664 (+597), average=432 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=10.4 MiB (+293 KiB), count=25261 (+597), average=434 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=10.7 MiB (+293 KiB), count=25858 (+597), average=435 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=11.0 MiB (+261 KiB), count=26455 (+597), average=435 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=11.2 MiB (+265 KiB), count=27052 (+597), average=436 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=11.5 MiB (+273 KiB), count=27649 (+597), average=437 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=12.1 MiB (+631 KiB), count=29342 (+1693), average=433 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=12.4 MiB (+276 KiB), count=29940 (+598), average=434 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=13.0 MiB (+631 KiB), count=31633 (+1693), average=431 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=13.9 MiB (+890 KiB), count=33326 (+1693), average=437 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=14.8 MiB (+890 KiB), count=35019 (+1693), average=442 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=15.0 MiB (+250 KiB), count=35616 (+597), average=442 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=15.3 MiB (+276 KiB), count=36213 (+597), average=442 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=15.9 MiB (+694 KiB), count=37905 (+1693), average=441 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=16.4 MiB (+497 KiB), count=39050 (+1145), average=441 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=16.9 MiB (+497 KiB), count=40195 (+1145), average=441 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=17.2 MiB (+265 KiB), count=40792 (+597), average=441 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=17.4 MiB (+281 KiB), count=41389 (+597), average=442 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=18.9 MiB (+1460 KiB), count=44486 (+3097), average=445 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=19.1 MiB (+276 KiB), count=45083 (+597), average=445 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=21.4 MiB (+2356 KiB), count=50614 (+5531), average=444 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=22.2 MiB (+777 KiB), count=52856 (+2242), average=440 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=22.4 MiB (+250 KiB), count=53453 (+597), average=440 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=22.7 MiB (+281 KiB), count=54050 (+597), average=441 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=23.2 MiB (+497 KiB), count=55195 (+1145), average=441 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=24.0 MiB (+765 KiB), count=56922 (+1727), average=441 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=24.2 MiB (+248 KiB), count=57536 (+615), average=441 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=24.9 MiB (+694 KiB), count=59229 (+1693), average=440 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=25.1 MiB (+261 KiB), count=59826 (+597), average=440 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=25.4 MiB (+273 KiB), count=60424 (+598), average=441 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=25.9 MiB (+549 KiB), count=61569 (+1145), average=442 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=26.5 MiB (+571 KiB), count=62714 (+1145), average=443 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=27.4 MiB (+890 KiB), count=64407 (+1693), average=445 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=27.6 MiB (+261 KiB), count=65004 (+597), average=445 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=28.2 MiB (+571 KiB), count=66149 (+1145), average=447 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=28.4 MiB (+260 KiB), count=66746 (+597), average=447 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=29.3 MiB (+890 KiB), count=68439 (+1693), average=449 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=29.6 MiB (+273 KiB), count=69036 (+597), average=449 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=29.8 MiB (+261 KiB), count=69633 (+597), average=449 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=30.1 MiB (+302 KiB), count=70230 (+597), average=450 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=30.6 MiB (+549 KiB), count=71375 (+1145), average=450 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=31.1 MiB (+497 KiB), count=72520 (+1145), average=450 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=31.4 MiB (+260 KiB), count=73117 (+597), average=450 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=31.6 MiB (+250 KiB), count=73714 (+597), average=450 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=32.4 MiB (+777 KiB), count=75956 (+2242), average=447 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=33.1 MiB (+777 KiB), count=78197 (+2242), average=444 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=33.9 MiB (+765 KiB), count=79924 (+1727), average=445 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=34.5 MiB (+571 KiB), count=81070 (+1146), average=446 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=35.2 MiB (+765 KiB), count=82797 (+1727), average=446 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=35.7 MiB (+553 KiB), count=83942 (+1145), average=446 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=36.0 MiB (+260 KiB), count=84539 (+597), average=446 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=36.3 MiB (+281 KiB), count=85136 (+597), average=447 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=36.8 MiB (+553 KiB), count=86281 (+1145), average=447 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=38.2 MiB (+1460 KiB), count=89378 (+3097), average=449 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=38.5 MiB (+248 KiB), count=89993 (+615), average=448 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=39.2 MiB (+694 KiB), count=91686 (+1693), average=448 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=39.9 MiB (+727 KiB), count=93379 (+1693), average=448 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=40.1 MiB (+273 KiB), count=93975 (+597), average=448 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=40.4 MiB (+276 KiB), count=94572 (+597), average=448 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=40.9 MiB (+497 KiB), count=95717 (+1145), average=448 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=41.1 MiB (+250 KiB), count=96314 (+597), average=448 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=41.4 MiB (+273 KiB), count=96911 (+597), average=448 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=41.7 MiB (+291 KiB), count=97527 (+616), average=448 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=42.2 MiB (+497 KiB), count=98672 (+1145), average=448 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=42.9 MiB (+777 KiB), count=100914 (+2242), average=446 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=43.5 MiB (+553 KiB), count=102059 (+1145), average=447 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=43.7 MiB (+260 KiB), count=102656 (+597), average=447 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=44.4 MiB (+727 KiB), count=104349 (+1693), average=446 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=45.0 MiB (+571 KiB), count=105494 (+1145), average=447 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=45.9 MiB (+890 KiB), count=107187 (+1693), average=449 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=46.5 MiB (+694 KiB), count=108880 (+1693), average=448 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=46.8 MiB (+293 KiB), count=109477 (+597), average=448 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=47.5 MiB (+727 KiB), count=111170 (+1693), average=448 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=49.8 MiB (+2356 KiB), count=116700 (+5530), average=448 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=50.4 MiB (+553 KiB), count=117845 (+1145), average=448 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=50.9 MiB (+549 KiB), count=118990 (+1145), average=449 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=51.2 MiB (+261 KiB), count=119587 (+597), average=449 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=51.4 MiB (+293 KiB), count=120184 (+598), average=449 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4379: size=52.2 MiB (+765 KiB), count=121911 (+1727), average=449 B

Version 1.18.19, also with memory leak:

/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=890 KiB (+890 KiB), count=1693 (+1693), average=538 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=1138 KiB (+248 KiB), count=2308 (+615), average=505 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=1832 KiB (+694 KiB), count=4001 (+1693), average=469 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=2082 KiB (+250 KiB), count=4598 (+597), average=464 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=2343 KiB (+261 KiB), count=5195 (+597), average=462 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=2608 KiB (+265 KiB), count=5792 (+597), average=461 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=3301 KiB (+694 KiB), count=7485 (+1693), average=452 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=4067 KiB (+765 KiB), count=9212 (+1727), average=452 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=4698 KiB (+631 KiB), count=10905 (+1693), average=441 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=5000 KiB (+302 KiB), count=11502 (+597), average=445 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=5726 KiB (+727 KiB), count=13196 (+1694), average=444 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=5987 KiB (+261 KiB), count=13793 (+597), average=445 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=6753 KiB (+765 KiB), count=15520 (+1727), average=446 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=7013 KiB (+260 KiB), count=16117 (+597), average=446 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=7566 KiB (+553 KiB), count=17262 (+1145), average=449 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=7816 KiB (+250 KiB), count=17859 (+597), average=448 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=8706 KiB (+890 KiB), count=19552 (+1693), average=456 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=9259 KiB (+553 KiB), count=20697 (+1145), average=458 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=9509 KiB (+250 KiB), count=21294 (+597), average=457 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=9770 KiB (+260 KiB), count=21891 (+597), average=457 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=10.3 MiB (+765 KiB), count=23618 (+1727), average=457 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=11.0 MiB (+765 KiB), count=25345 (+1727), average=457 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=11.3 MiB (+265 KiB), count=25942 (+597), average=457 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=11.6 MiB (+302 KiB), count=26539 (+597), average=458 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=13.9 MiB (+2356 KiB), count=32069 (+5530), average=454 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=14.1 MiB (+250 KiB), count=32666 (+597), average=454 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=14.4 MiB (+273 KiB), count=33263 (+597), average=454 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=14.9 MiB (+497 KiB), count=34408 (+1146), average=454 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=15.6 MiB (+694 KiB), count=36101 (+1693), average=452 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=16.3 MiB (+765 KiB), count=37828 (+1727), average=452 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=16.6 MiB (+293 KiB), count=38425 (+597), average=453 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=16.9 MiB (+260 KiB), count=39022 (+597), average=453 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=17.5 MiB (+694 KiB), count=40715 (+1693), average=451 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=17.8 MiB (+248 KiB), count=41330 (+615), average=451 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=18.0 MiB (+248 KiB), count=41945 (+615), average=450 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=18.3 MiB (+260 KiB), count=42542 (+597), average=450 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=19.6 MiB (+1318 KiB), count=45332 (+2790), average=452 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=19.8 MiB (+260 KiB), count=45929 (+597), average=452 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=20.1 MiB (+248 KiB), count=46544 (+615), average=452 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=20.3 MiB (+276 KiB), count=47140 (+597), average=452 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=21.2 MiB (+890 KiB), count=48833 (+1693), average=455 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=21.5 MiB (+293 KiB), count=49430 (+597), average=456 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=22.2 MiB (+727 KiB), count=51123 (+1693), average=455 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=22.4 MiB (+250 KiB), count=51720 (+597), average=455 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=23.2 MiB (+777 KiB), count=53962 (+2242), average=451 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=24.5 MiB (+1318 KiB), count=56752 (+2790), average=452 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=25.8 MiB (+1318 KiB), count=59542 (+2790), average=454 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=26.5 MiB (+777 KiB), count=61784 (+2242), average=450 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=26.8 MiB (+302 KiB), count=62381 (+597), average=451 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=27.1 MiB (+293 KiB), count=62978 (+597), average=451 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=28.5 MiB (+1460 KiB), count=66076 (+3098), average=453 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=28.8 MiB (+276 KiB), count=66673 (+597), average=453 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=29.3 MiB (+497 KiB), count=67818 (+1145), average=453 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=29.8 MiB (+549 KiB), count=68963 (+1145), average=453 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=30.1 MiB (+261 KiB), count=69560 (+597), average=453 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=32.4 MiB (+2356 KiB), count=75090 (+5530), average=452 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=32.6 MiB (+261 KiB), count=75687 (+597), average=452 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=33.2 MiB (+553 KiB), count=76832 (+1145), average=453 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=33.4 MiB (+250 KiB), count=77428 (+597), average=453 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=33.7 MiB (+250 KiB), count=78025 (+597), average=452 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=34.2 MiB (+549 KiB), count=79170 (+1145), average=453 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=34.8 MiB (+571 KiB), count=80315 (+1145), average=454 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=35.2 MiB (+497 KiB), count=81460 (+1145), average=454 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=35.5 MiB (+291 KiB), count=82075 (+615), average=454 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=35.8 MiB (+302 KiB), count=82673 (+598), average=454 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=36.5 MiB (+727 KiB), count=84366 (+1693), average=454 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=37.1 MiB (+549 KiB), count=85511 (+1145), average=454 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=37.3 MiB (+250 KiB), count=86108 (+597), average=454 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=37.9 MiB (+631 KiB), count=87801 (+1693), average=453 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=38.5 MiB (+549 KiB), count=88946 (+1145), average=453 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=38.7 MiB (+276 KiB), count=89543 (+597), average=453 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=39.4 MiB (+727 KiB), count=91236 (+1693), average=453 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=39.7 MiB (+302 KiB), count=91833 (+597), average=454 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=40.2 MiB (+497 KiB), count=92977 (+1145), average=454 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=41.0 MiB (+765 KiB), count=94704 (+1727), average=454 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=41.5 MiB (+571 KiB), count=95849 (+1145), average=454 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=41.8 MiB (+261 KiB), count=96447 (+598), average=454 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=42.3 MiB (+497 KiB), count=97592 (+1145), average=454 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=43.5 MiB (+1318 KiB), count=100381 (+2790), average=455 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=44.0 MiB (+497 KiB), count=101526 (+1145), average=455 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=44.3 MiB (+261 KiB), count=102123 (+597), average=455 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=44.5 MiB (+248 KiB), count=102738 (+615), average=454 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=44.8 MiB (+281 KiB), count=103335 (+597), average=455 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=45.1 MiB (+260 KiB), count=103932 (+597), average=455 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=45.7 MiB (+631 KiB), count=105625 (+1693), average=453 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=46.3 MiB (+631 KiB), count=107318 (+1693), average=452 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=46.5 MiB (+250 KiB), count=107915 (+597), average=452 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=46.8 MiB (+293 KiB), count=108513 (+598), average=452 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=47.1 MiB (+250 KiB), count=109110 (+597), average=452 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=47.4 MiB (+291 KiB), count=109725 (+615), average=453 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=47.6 MiB (+276 KiB), count=110321 (+597), average=453 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=48.5 MiB (+890 KiB), count=112014 (+1693), average=454 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=48.7 MiB (+265 KiB), count=112611 (+597), average=454 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=49.0 MiB (+293 KiB), count=113208 (+597), average=454 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=49.7 MiB (+694 KiB), count=114901 (+1693), average=454 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=50.2 MiB (+497 KiB), count=116046 (+1145), average=454 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=50.8 MiB (+631 KiB), count=117739 (+1693), average=453 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=51.1 MiB (+293 KiB), count=118336 (+597), average=453 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=51.4 MiB (+291 KiB), count=118951 (+615), average=453 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4377: size=51.7 MiB (+276 KiB), count=119549 (+598), average=453 B

And finally, version 1.19.1, still with memory leak:

/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=571 KiB (+571 KiB), count=1157 (+1157), average=506 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=873 KiB (+302 KiB), count=1762 (+605), average=508 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=1640 KiB (+766 KiB), count=3507 (+1745), average=479 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=2530 KiB (+891 KiB), count=5216 (+1709), average=497 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=2781 KiB (+251 KiB), count=5821 (+605), average=489 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=3030 KiB (+249 KiB), count=6446 (+625), average=481 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=3323 KiB (+294 KiB), count=7051 (+605), average=483 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=3585 KiB (+261 KiB), count=7656 (+605), average=479 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=3861 KiB (+276 KiB), count=8261 (+605), average=479 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=4589 KiB (+728 KiB), count=9971 (+1710), average=471 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=4870 KiB (+281 KiB), count=10576 (+605), average=471 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=5131 KiB (+261 KiB), count=11181 (+605), average=470 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=5897 KiB (+766 KiB), count=12926 (+1745), average=467 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=6163 KiB (+265 KiB), count=13531 (+605), average=466 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=6413 KiB (+251 KiB), count=14136 (+605), average=465 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=7045 KiB (+632 KiB), count=15845 (+1709), average=455 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=7306 KiB (+261 KiB), count=16450 (+605), average=455 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=7587 KiB (+281 KiB), count=17054 (+605), average=456 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=7863 KiB (+276 KiB), count=17660 (+606), average=456 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=8157 KiB (+294 KiB), count=18265 (+605), average=457 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=8459 KiB (+302 KiB), count=18870 (+605), average=459 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=8709 KiB (+250 KiB), count=19475 (+605), average=458 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=9475 KiB (+766 KiB), count=21220 (+1745), average=457 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=10047 KiB (+571 KiB), count=22377 (+1157), average=460 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=10.6 MiB (+778 KiB), count=24638 (+2262), average=450 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=10.8 MiB (+281 KiB), count=25243 (+605), average=450 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=11.1 MiB (+274 KiB), count=25849 (+606), average=451 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=11.8 MiB (+728 KiB), count=27558 (+1709), average=450 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=12.4 MiB (+554 KiB), count=28715 (+1157), average=451 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=14.7 MiB (+2358 KiB), count=34289 (+5574), average=449 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=15.5 MiB (+891 KiB), count=35998 (+1709), average=453 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=16.1 MiB (+549 KiB), count=37155 (+1157), average=454 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=16.8 MiB (+694 KiB), count=38864 (+1709), average=452 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=17.5 MiB (+728 KiB), count=40573 (+1709), average=451 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=17.7 MiB (+249 KiB), count=41198 (+625), average=451 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=18.0 MiB (+294 KiB), count=41803 (+605), average=451 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=18.3 MiB (+281 KiB), count=42408 (+605), average=452 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=19.0 MiB (+778 KiB), count=44670 (+2262), average=447 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=19.8 MiB (+766 KiB), count=46415 (+1745), average=447 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=21.2 MiB (+1462 KiB), count=49540 (+3125), average=449 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=21.5 MiB (+281 KiB), count=50145 (+605), average=449 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=22.2 MiB (+778 KiB), count=52407 (+2262), average=445 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=22.5 MiB (+302 KiB), count=53012 (+605), average=446 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=22.8 MiB (+261 KiB), count=53617 (+605), average=446 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=23.3 MiB (+498 KiB), count=54774 (+1157), average=445 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=24.0 MiB (+778 KiB), count=57036 (+2262), average=442 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=24.3 MiB (+276 KiB), count=57641 (+605), average=442 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=24.9 MiB (+571 KiB), count=58798 (+1157), average=443 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=25.4 MiB (+571 KiB), count=59955 (+1157), average=445 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=25.7 MiB (+291 KiB), count=60579 (+625), average=445 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=26.6 MiB (+891 KiB), count=62288 (+1709), average=447 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=27.1 MiB (+554 KiB), count=63445 (+1157), average=448 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=27.4 MiB (+302 KiB), count=64050 (+605), average=449 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=27.7 MiB (+276 KiB), count=64655 (+605), average=449 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=27.9 MiB (+276 KiB), count=65260 (+605), average=449 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=28.2 MiB (+261 KiB), count=65865 (+605), average=449 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=28.9 MiB (+766 KiB), count=67610 (+1745), average=449 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=29.8 MiB (+891 KiB), count=69319 (+1709), average=451 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=30.6 MiB (+766 KiB), count=71064 (+1745), average=451 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=30.9 MiB (+302 KiB), count=71669 (+605), average=452 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=31.1 MiB (+281 KiB), count=72274 (+605), average=452 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=31.4 MiB (+276 KiB), count=72879 (+605), average=452 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=31.9 MiB (+549 KiB), count=74036 (+1157), average=452 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=34.2 MiB (+2358 KiB), count=79610 (+5574), average=451 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=34.9 MiB (+632 KiB), count=81319 (+1709), average=450 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=37.2 MiB (+2358 KiB), count=86893 (+5574), average=448 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=37.9 MiB (+778 KiB), count=89155 (+2262), average=446 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=38.2 MiB (+261 KiB), count=89760 (+605), average=446 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=38.4 MiB (+261 KiB), count=90365 (+605), average=446 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=38.7 MiB (+273 KiB), count=90970 (+605), average=446 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=39.0 MiB (+261 KiB), count=91575 (+605), average=446 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=39.6 MiB (+694 KiB), count=93284 (+1709), average=446 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=39.9 MiB (+265 KiB), count=93890 (+606), average=446 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=41.2 MiB (+1319 KiB), count=96704 (+2814), average=447 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=41.4 MiB (+265 KiB), count=97309 (+605), average=447 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=42.3 MiB (+891 KiB), count=99018 (+1709), average=448 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=42.9 MiB (+632 KiB), count=100726 (+1709), average=447 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=43.2 MiB (+276 KiB), count=101331 (+605), average=447 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=44.1 MiB (+891 KiB), count=103041 (+1710), average=448 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=44.4 MiB (+291 KiB), count=103666 (+625), average=449 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=44.6 MiB (+250 KiB), count=104271 (+605), average=448 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=45.4 MiB (+778 KiB), count=106533 (+2262), average=446 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=45.6 MiB (+251 KiB), count=107138 (+605), average=446 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=46.9 MiB (+1319 KiB), count=109952 (+2814), average=447 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=47.4 MiB (+549 KiB), count=111109 (+1157), average=448 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=47.7 MiB (+302 KiB), count=111713 (+605), average=448 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=48.0 MiB (+276 KiB), count=112318 (+605), average=448 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=48.5 MiB (+571 KiB), count=113475 (+1157), average=449 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=48.8 MiB (+291 KiB), count=114100 (+625), average=449 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=49.1 MiB (+249 KiB), count=114725 (+625), average=449 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=50.5 MiB (+1462 KiB), count=117850 (+3125), average=449 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=50.8 MiB (+274 KiB), count=118456 (+606), average=449 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=53.1 MiB (+2358 KiB), count=124030 (+5574), average=449 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=53.3 MiB (+273 KiB), count=124635 (+605), average=449 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=53.6 MiB (+302 KiB), count=125240 (+605), average=449 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=53.9 MiB (+273 KiB), count=125845 (+605), average=449 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=54.1 MiB (+251 KiB), count=126450 (+605), average=449 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=54.4 MiB (+302 KiB), count=127055 (+605), average=449 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=54.7 MiB (+249 KiB), count=127680 (+625), average=449 B
/home/maxocub/.virtualenvs/www/lib/python3.6/site-packages/fitz/fitz.py:4541: size=55.4 MiB (+778 KiB), count=129942 (+2262), average=447 B
@maxocub
Copy link
Author

maxocub commented Oct 28, 2021

I know there is supposed to be a minor memory leak in insert_pdf based on this comment, but I think this is a new one.

@JorjMcKie
Copy link
Collaborator

Thank you for these investgations!
I have spent some time to look for possible memory issues. Here is my overall take:

  1. There is no difference in the code relevant for method insert_pdf() between version 1.18.14 and 1.18.15. This is true for the base library, MuPDF, as well as PyMuPDF. So I cannot imagine how a different behaviour as you have observed could be explained.
  2. Version 1.19.x also has no changes there.
  3. The method indeed does have issues in terms of memory leakage, which I have come to believe is located in the base library. This apparently is intentional as explained further below.
  4. For a Python-relevant point of view, memory usage at some point in time is not the most vital thing: much more important is ensuring, that no memory blocks are allocated that are unreachable to Python garbage collector.
  5. MuPDF comes with its own memory management - which provides a hook for replacing the relevant C functions (malloc, etc.) with user functions. PyMuPDF uses this to ensure that Python memory management is being used by MuPDF.
  6. For optimum control over memory usage around doc.insert_pdf(), careful consideration for each use case should be applied. Please always keep in mind that most of PyMuPDF's Python objects have a "shadow" twin inside MuPDF. Although a lot of effort exists to keep these in sync, it is usually beneficial to explicitely delete the Python object for early garbage collection.
  7. Whenever done with a PDF (whether source or target), close it (which frees MuPDF resources) and also set it to None, to make it available to Python's GC.

More technical background:

  • To copy a source page to the target PDF, it must first be prepared: it will usually reference some or many other objects in the source PDF: images, fonts, XObjects etc. These references may be direct or implicit. There also may exist inheritable resources (defined only once in the source file, but needed by all or many pages), which are "localized" / copied to the source page's object definition. This process is called "flattening".
  • To prevent multiple copies of the same source PDF object in the target, a scratchpad is used, which contains already copied source objects numbers.
  • Due to MuPDF's internal memory management, even after a document has been closed, the used memory will not (completely) be reduced back to its before-open state (this however does not lead to memory unreachable to GC!): Opening and closing Adobe's PDF specification manual will end up with more than 1 MB of storage that has not been regained.

My test script tries to simulate your use case: prepend some page to each of 100 PDFs.
gc-insertpdf2.zip
And here are run logs for relevant PyMuPDF versions:

================================================================================
PyMuPDF 1.18.14
Memory deltas (MB) for doc.insert_pdf('sdw_2021_3.pdf')
Method profile: insert 1 source page into 100 target PDFs.
--------------------------------------------------------------------------------
Memory delta per method exec 0.124
================================================================================
Duration: 0 sec

================================================================================
PyMuPDF 1.18.15
Memory deltas (MB) for doc.insert_pdf('sdw_2021_3.pdf')
Method profile: insert 1 source page into 100 target PDFs.
--------------------------------------------------------------------------------
Memory delta per method exec 0.125
================================================================================
Duration: 0 sec

================================================================================
PyMuPDF 1.19.1
Memory deltas (MB) for doc.insert_pdf('sdw_2021_3.pdf')
Method profile: insert 1 source page into 100 target PDFs.
--------------------------------------------------------------------------------
Memory delta per method exec 0.124
================================================================================
Duration: 0 sec

The delta of 124 KB is the additionally occupied storage after a PDF has received a new front page. This number is dependent on the source and target PDFs, resp. source page(s).

Key observation: there is no difference between PyMuPDF versions.

I would welcome your comments.

@maxocub
Copy link
Author

maxocub commented Nov 1, 2021

Thank you for your answer @JorjMcKie,
I am using a context manager to open my PDF files with PyMuPDF, so I am not closing them explicitly.
Do you think that might be the source of the memory leak?
I will try to use explicit open() and close(), as well as set the variables to None and see if it makes any difference.

@maxocub
Copy link
Author

maxocub commented Nov 1, 2021

Hi @JorjMcKie,
I looked at what changed between 1.18.14 and 1.18.15 and there is this commit which remove the call to close() in __exit__(), which might explain why I have a memory leak when using a context manager but not when using explicit open() and close():

diff --git a/fitz/fitz.i b/fitz/fitz.i
index fc5fd80..023afb0 100644
--- a/fitz/fitz.i
+++ b/fitz/fitz.i
@@ -4138,7 +4144,25 @@ if basestate:
                 return self
 
             def __exit__(self, *args):
-                self.close()
+                if hasattr(self, "_reset_page_refs"):
+                    self._reset_page_refs()
+                if hasattr(self, "Graftmaps"):
+                    for k in self.Graftmaps.keys():
+                        self.Graftmaps[k] = None
+                if hasattr(self, "this") and self.thisown:
+                    try:
+                        self.__swig_destroy__(self)
+                    except:
+                        pass
+                    self.thisown = False
+
+                self.Graftmaps = {}
+                self.ShownPages = {}
+                self.InsertedImages  = {}
+                self.stream = None
+                self._reset_page_refs = DUMMY
+                self.__swig_destroy__ = DUMMY
+                self.is_closed = True
             %}
     }
 };

@JorjMcKie
Copy link
Collaborator

Do you think that might be the source of the memory leak?

Not much at least - I tried that one, too.
Well, I am really out of good advice at the moment. Hope that someone can point me to a place where I might have forgotten to reclaim memory.
As I wrote: my script is unter control of the Garbage Collector. If there were any memory, that cannot be recollected, it would complain and print those blocks out at script end.
But there is none. So I am convinced, that simply MuPDF keeps memory allocated for whatever motives.
A similar effect exists if you simply open and close a PDF, and do nothing else: you will not end up with the same memory thereafter, as I wrote.
For your specific use case, I recommend you start subprocesses and let each one separately add a new front page to one or just a few PDFs.

@JorjMcKie
Copy link
Collaborator

why I have a memory leak when using a context manager but not when using explicit open() and close()

Try it. That code is actually just a copy of what happens under close().

@maxocub
Copy link
Author

maxocub commented Nov 1, 2021

It does not seem like an exact copy of what is in close(), I see a few more things are done in close().

@JorjMcKie
Copy link
Collaborator

what are they?

@maxocub
Copy link
Author

maxocub commented Nov 1, 2021

From fitz.py at 1.18.15:

    def close(self) -> None:

        """Close document."""
        if self.is_closed:
            raise ValueError("document closed")
        if hasattr(self, "_outline") and self._outline:
            self._dropOutline(self._outline)
            self._outline = None
        self._reset_page_refs()
        self.metadata = None
        self.stream = None
        self.is_closed = True
        self.FontInfos = []
        for k in self.Graftmaps.keys():
            self.Graftmaps[k] = None
        self.Graftmaps = {}
        self.ShownPages = {}
        self.InsertedImages = {}

        val = _fitz.Document_close(self)
        self.thisown = False

        return val


    def __exit__(self, *args):
        if hasattr(self, "_reset_page_refs"):
            self._reset_page_refs()
        if hasattr(self, "Graftmaps"):
            for k in self.Graftmaps.keys():
                self.Graftmaps[k] = None
        if hasattr(self, "this") and self.thisown:
            try:
                self.__swig_destroy__(self)
            except:
                pass
            self.thisown = False

        self.Graftmaps = {}
        self.ShownPages = {}
        self.InsertedImages = {}
        self.stream = None
        self._reset_page_refs = DUMMY
        self.__swig_destroy__ = DUMMY
        self.is_closed = True

Close() calls _dropOutline(), sets metadata to None, sets FontInfos to an empty list and calls _fitz.Document_close().

Do you know why we should not simply call close() in __exit__() like it was in 1.18.14? The commit message does not seem to say why.

@JorjMcKie
Copy link
Collaborator

Do you know why we should not simply call close() in exit() like it was in 1.18.14?

I am reverting this in the new version 1.19.3. There are preliminary wheels here.

@JorjMcKie JorjMcKie added the resolved fixed / implemented / answered label Dec 8, 2021
@JorjMcKie
Copy link
Collaborator

New version 1.19.3 is being uploaded to PyPI.

@maxocub
Copy link
Author

maxocub commented Dec 13, 2021

Great, thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug resolved fixed / implemented / answered
Projects
None yet
Development

No branches or pull requests

2 participants