Самая большая проблема с производительностью Java, я думаю, это сборка мусора. Без тщательного рассмотрения того, что вы делаете, в Java легко писать код, который нужно периодически останавливать для очистки. С ++ не имеет такой проблемы. С другой стороны, без учета того, что вы делаете, легко написать код C ++, который теряет кучу памяти (когда вы забыли удалить что-то из кучи). Это действительно плохо для длительного процесса, такого как сервер. В Java возможна утечка памяти, но это связано с слишком долгим хранением ссылок, а не с тем, что встроено в язык.
Хотя C ++ имеет тенденцию работать быстрее, с современными компиляторами, работающими точно в срок, для Java разница в производительности, как правило, завышена. В целом Java, вероятно, так же хорошо, как C ++ для потокового аудио-сервера. Если вы обнаружите, что в каком-то ресурсоемком разделе есть узкое место, вы всегда можете перейти на C ++, используя Собственный интерфейс Java . Но это должно быть только после выявления проблемы с профилированием.