FreeSWITCH doesn’t eat up all the memory... It just eats up what it needs and just doesn’t give it back....
On top of that, even giving it back via free() may not make much of a difference. For any Linux process, even after doing free() in a memory block, there is no guarantee that libc will return the memory to the operating system, and in most practical cases most likely does not, but rather keep it as a free chunk in their own pool for the next malloc request. For libc to return it it probably has to fulfill a bunch of requirements (full page 4k returned etc) which are rarely, if ever, met.