sharp.js进行多任务处理时内存泄漏?

造成原因

默认大多数基于glibc的Linux上的默认libvps内存分配器不适合涉及大量内存分配和使用激增的长期运行进程。至于macOS,基于Musl的Linux,Alpine,Windows这些操作系统都避免了这类问题,那么关于"内存泄漏"的问题其实应该属于内存分配器的特性,进行多线程内存碎片化加快处理任务的时间,提高工作的效率。只是目前在大多数glibc的Linux上运行会造成释放的内存碎片并没有返回到操作系统里。后续如果有更准确的说法会继续更新(源:https://github.com/lovell/sharp/issues/955)

如何解决

大概就是安装jemalloc内存分配器替代默认的内存分配器
sudo apt-get -y install autoconf libxslt-dev xsltproc docbook-xsl

git clone https://github.com/jemalloc/jemalloc.git
cd jemalloc
autoconf

./configure

make dist

sudo make install



sudo su
vi /etc/enviroment

LD_PRELOAD=/usr/local/lib/libjemalloc.so.2

export LD_PRELOAD=/usr/local/lib/libjemalloc.so.2

sudo reboot




# make install version
sudo echo "/usr/local/lib/libjemalloc.so.2" >> /etc/ld.so.preload

# apt-get version
sudo echo "/usr/lib/x86_64-linux-gnu/libjemalloc.so" >> /etc/ld.so.preload

源解决方案https://github.com/lovell/sharp/issues/1803

不过要注意的是以上解决方案配置过后,可能会在其他框架的使用过程中报错,如果碰到可以在该解决方案里一步步排查

posted @ 2022-11-30 00:25  anhiao  阅读(208)  评论(0)    收藏  举报