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

浙公网安备 33010602011771号