You may be interested in programming languages with linear or unique types, they can manage resources (and, in particular, memory). Recent examples: ATS and LinearML .
There have been attempts to “region-based memory management” (for example, Cyclone), but they have not been removed yet - regions also allow (earlier) memory recovery, but they are not enough (for example, there are programs that, when launched with region-based memory management, will demonstrate unacceptable performance). I think these two schemes can be mixed.
Back to your question, some ATS programs can run without garbage collection. (I will not say that such programs are written in a "functional" style, for example, in SML, but in a combination of imperative and first-order functional style.)