В среднем, код на Java работает быстрее кода на C++. За исключением некоторых специфичных задач, разумеется.
Я конечно же не утверждаю, что С++ медленнее (этого не может быть, т.к. он более низкоуровневый), но он быстр только в "лабораторных" условиях, когда код оптимизирован до идеального состояния.
А вот Java не требуется настолько сильно оптимизировать, за вас это сделает java машина, причем лучше чем ленивый человек
Проблемы в обычных серверах линейки, написанных на java (они сильно грузят проц, жрут кучу памяти, и тормозят) - совсем не от языка. Проблема в неправильном подходе к программированию на java. Некоторые думают, что там не нужно следить за памятью (т.к. GC делает всю эту работу), и творят что хотят. Но это не так, за памятью нужно следить внимательнейшим образом, не допускать утечек и повторно использовать старую память всегда, когда это возможно.