"TCMalloc currently does not return any memory to the system."[1]
That means if you have many long-running processes, then each of them will consume the maximum amount of memory that it ever has. Not good for a multi-tenant setup.
If it's a dedicated server running one multi-threaded application, maybe that's OK, although I'd be a little bit wary anyway.
I should note that, even if the application doesn't let the memory go, the OS could page out the inactive regions. Not really something that I would like to rely on, though. There are some other caveats also, like it would make memory accounting a little trickier ("Wow, that process is huge! Oh, never mind, it's mostly paged out.").
For what it's worth, I just spent considerable effort to get rid of tcmalloc due (in part) to problems like this. [2]
[1] http://goog-perftools.sourceforge.net/doc/tcmalloc.html
[2] You wouldn't think it would be a lot of effort, but we were using dynamic libraries that were linking against tcmalloc, which is outright dangerous if the main executable isn't linked against tcmalloc (you don't want to replace the allocator in a running executable). And some of those libraries were actually using the tcmalloc-specific features/symbols, so I had to get away from that first.