Use Guava's MapMaker.
An example from the doc shows exactly what you need (translated into Scala):
ConcurrentMap<Request,import Stopwatch>java.util.concurrent.ConcurrentMap
val timers: =ConcurrentMap[Request, newStopwatch] MapMaker()=
new MapMaker().concurrencyLevel(4)
.weakKeys()
.makeMap();
This is, of course, Java map, but you can easily wrap this mapit into Scala map:
import java.{util => ju}
import scala.collection.JavaConverters._
import scala.collection.mutable
val javaMap: ju.Map[String,String] = ...
val scalaMap: mutable.Map[String,String] = javaMap.asScala