Загрузочное приложение Spring не использует jemalloc
Я пытаюсь выяснить проблему утечки памяти. Я следую этой статье и пытаюсь использовать jemalloc
Следующие шаги:
export LD_PRELOAD=/usr/local/lib/libjemalloc.so
export MALLOC_CONF=prof:true,lg_prof_interval:30,lg_prof_sample:17
sudo java -jar application.jar
Однако файл.heap не создан. Я не могу найти libjemalloc.so в pmap -x результате. Как я могу убедиться, что jvm использует jemalloc? Сервер является сервером Ubuntu, и приложение использует весеннюю загрузку.
1 ответ
Когда ты бежишь sudo
Java получает корневую среду, в которую вы не экспортировали ранее LD_PRELOAD
а также MALLOC_CONF
,
Пытаться
sudo LD_PRELOAD=/usr/local/lib/libjemalloc.so \
MALLOC_CONF=prof:true,lg_prof_interval:30,lg_prof_sample:17 \
java -jar application.jar
КСТАТИ, jemalloc
не всегда полезно для профилирования Java-приложений, поскольку не может отображать стеки Java (но полезно для предотвращения утечек памяти, вызванных стандартным распределителем).
Попробуйте использовать async-profiler, как описано в этом ответе.
Также проверьте этот пост о потреблении памяти в Java.