MeetWq / meme-generator-contrib

Repository for meme-generator's extra memes
MIT License
29 stars 12 forks source link

[bug] 表情 fleshlight 有内存泄漏,一次 32 MB #11

Closed zombie110year closed 1 year ago

zombie110year commented 1 year ago

在使用 nonebot-plugin-memes 的时候发现内存膨胀比较快,经排查发现是表情“飞机杯”导致的,调用一次将增加32MB的内存占用。 用 memray attach 发现是在生成飞机杯表情时有个 numpy 乘法留下了 32MB 内存没释放。

因为我白天只能用手机 termux 看看服务器上的日志,没办法详细分析。晚上有空再研究一下这个问题。如果作者你有时间的话可以帮我解决一下吗(笑

下面这个是 memray 在调用两次飞机杯表情包时抓取到的记录,但是因为服务器上是以 attach 模式抓取的,没有更详细的调用栈。

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━┓
┃ Location                                                                                            ┃        Total Memory ┃     Total Memory % ┃       <Own Memory> ┃       Own Memory % ┃   Allocation Count ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━┩
│ __mul__ at /root/qqbot/heimiao/__pypackages__/3.10/lib/numpy/matrixlib/defmatrix.py                 │            32.000MB │             49.38% │           32.000MB │             49.38% │                  2 │
│ convert at /root/qqbot/heimiao/__pypackages__/3.10/lib/PIL/Image.py                                 │             3.371KB │              0.01% │            3.371KB │              0.01% │                  2 │
└─────────────────────────────────────────────────────────────────────────────────────────────────────┴─────────────────────┴────────────────────┴────────────────────┴────────────────────┴────────────────────┘
zombie110year commented 1 year ago

看起来是 PIL 的问题,加载字体后不会释放,是正常行为,此issue关闭。