使ってるライブラリはGlibcだよね?
500スレッド程度で数GBってのはmallocの普通の使い方じゃ起こらないと思うんだがなぁ。
unistd.hのgetpagesize()関数が非常に大きな値を返したりしてない?
俺の環境だと4096になったけど。
あと、malloc()の引数にどのくらいの値を使ってる?