Вы не можете создавать объекты в стеке, у вас могут быть только примитивы и ссылки в стеке, поэтому вопрос не относится к Java.
Были попытки использовать Escape-анализ для оптимизации объектов, которые недолговечны (и, возможно, вместо этого помещают их в стек), однако я не видел никаких свидетельств такого улучшения производительности.
Частично причина того, что производительность и производительность не такие, как в C / C ++, заключается в том, что Java имеет локальное распределение потоков в куче, и объекты не перерабатываются так агрессивно. В C / C ++ есть локальные стеки потоков, но вам нужны дополнительные библиотеки для поддержки многопоточного выделения объектов. Объекты перерабатываются более агрессивно, что увеличивает стоимость размещения объектов.
Одним из самых больших изменений в мире C / C ++ является обнаружение того, что Java обладает гораздо меньшими возможностями, но старается максимально использовать их (в JVM происходит много сложной оптимизации) С другой стороны Java имеет богатый / сбивающий с толку массив библиотек с открытым исходным кодом.