jemalloc is a general purpose malloc(3) implementation that emphasizes fragmentation avoidance and scalable concurrency support. It really shines when used with ruby, and adding it is pretty painless.
All you have to do is add the following 2 lines to your
RUN apt-get update ; \ apt-get install -y --no-install-recommends libjemalloc2 ; ENV LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so.2
We are going to use the
LD_PRELOAD environment variable approach above. If you set
LD_PRELOAD to the path of a shared object, that file will be loaded before any other library (including the C runtime,
libc.so). So to run our jemalloc implementation, we just define the path of the jemalloc lib.
For M1 Macs you will need to change the path as follows:
# use this for m1 macs ENV LD_PRELOAD=/usr/lib/aarch64-linux-gnu/libjemalloc.so.2