Since Erlang was created by Ericcson Communications for use in telecommunication, fast and scalable is an important consideration.
You may want to look at this article regarding trying to get Erlang ready for hard real-time applications, to see what problems they need to overcome for that.
http://lambda-the-ultimate.org/node/2954
You may find that some of the issues that are still there may be a show-stopper for your application also.
You may also find this of interest, as FP will be different than OOP, so some of the problems you encounter in OOP will be different in the FP domain.
http://blog.ribomation.com/2009/06/28/the-ups-and-downs-of-erlang/
In functional programming, once you set a variable it is immutable, generally, so you don't create lots of new objects. Through recursion you will find that you will have fewer variables, so the garbage collection becomes more important, which may help resolve the memory issues you are having.
But, you would need to see if your problem will work well in FP, as it is not the best language for all situations.