Ну, эти переменные являются ссылками на неизменяемые строки, которые выделяются во время компиляции.
Конечно, это зависит от виртуальной машины, но в целом, я думаю, что большинство языков сценариев на основе C выделяют большой блок памяти, расширяя его по мере необходимости и самостоятельно выделяя его, редко, если вообще когда-либо возвращают что-либо O / S. Особенно в лексически ограниченном языке, которым почти все они являются, все переменные распределяются динамически в этом блоке, а не на чем-либо аналогичном стеку C, и они освобождаются либо с помощью подсчета ссылок, либо с помощью сборщика мусора.
Если ваш язык сценариев работает на JVM, или .NET, или что-то в этом роде (Parrot?), Создание переменной - это просто создание чего-то похожего на объект Java. Через некоторое время после того, как больше не будет ссылок на объект, сборщик мусора освободит память.