DBCC FREEPROCCACHE as such does not free up space in tempdb. If you see this, it could be that you have query plans with spool operators or hash/sort operators that spills to disk, so that when these queries are executed, a lot of tempdb space is consumed. When you clear the plan cache, the queries are sniffed for different parameters, and now execute with less or no disk spill.
But this quite a bit speculative. You have offered very little information. As a start, answer these questions:
- What is the output from "SELECT @@version".
- What is the typical size of the databases(s) on the instance?
- What is the size of tempdb? Which size does it have when it is "full"?
- Do any of the databases have snapshot or read_commmit_snapshot enabled? Any readable secondary?