Я не сильно разбираюсь в процессах запуска JVM машины, но вопрос касается возможности полного отказа от off-heap памяти и использовать память только внутри кучи (heap). Флаг: -XX:MaxDirectMemorySize=0 по своей сути должен попросту отказывать от прямой памяти, а следующие два флага, -Xms16384M...