Нет, я никогда не слышал о таких программах или даже о технике.
Это кажется плохой идеей, потому что тогда вы фактически ограничены тем, что вы можете делать на C или подобных низкоуровневых языках. И если вы этого хотите, проще написать на C. Кроме того, есть много способов избежать длительных пауз GC, и на практике они могут удовлетворить большинство требований с низкой задержкой.
Кроме того, чтобы сделать что-нибудь полезное, вам придется использовать API-интерфейсы платформы Java или другие сторонние библиотеки, которые, вероятно, будут размещать множество объектов за вашей спиной, поэтому избегать создания всех экземпляров объектов, вероятно, даже не практично в нетривиальной программе.
Так что я вполне уверен, что это городская легенда или, в лучшем случае, нишевая идея.
Изменить:
Этот метод используется для получения поведения в режиме реального времени или с низкой задержкой.
В настоящее время это может быть устаревшим из-за лучших алгоритмов GC, но это, конечно, будет зависеть от обстоятельств. Так что это, вероятно, что-то рассмотреть, по крайней мере, для горячих точек алгоритма.
Как пример:
Многие среды реального времени Java накладывают некоторые ограничения на создание объектов. Это не означает, что они могут использовать только примитивы: использование сложных объектов все еще возможно, но, например, Критическая безопасность Java (http://www.aicas.com/papers/scj.pdf) требует, чтобы все экземпляры объектов происходили на этапе инициализации. После запуска приложения («фаза миссии») создание экземпляров больше не разрешается, поэтому вам придется работать с имеющимися экземплярами объектов.
Это позволяет избежать непредсказуемости, связанной с динамическим размещением и сборкой мусора, но все же позволяет использовать динамическую память (ограниченным образом).
Спасибо andersoj & mikera за объяснение этого мне.