Вы должны отключить JIT для запуска JVM под valgrind, вот так:
valgrind java -Djava.compiler=NONE ...
Кроме того, если вы в конечном итоге используете сгенерированные подавления (а вы, скорее всего, это сделаете!), Может возникнуть проблема с глубиной стеков вызовов в сгенерированных подавлениях, которая чаще возникает при работе под JVM.
В последних версиях valgrind сгенерированные подавления могут содержать более глубокие стеки вызовов, которые могут быть обработаны самим valgrind / memcheck. Симптом этой проблемы заключается в том, что valgrind неожиданно завершает работу с сообщением «слишком много вызывающих в трассировке стека».
Эта проблема легко решается: перед сборкой valgrind отредактируйте файл coregrind / m_errormgr.c и измените жестко закодированное значение в #define на большее (я использую 99):
/* Max number of callers for context in a suppression. */
#define VG_MAX_SUPP_CALLERS 99
Затем соберите и установите valgrind согласно документации.