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