Why does Java provides default value for partition count as 16 instead of very high value?
It is very rare to have these many CPUs (The number of threads is not so important) using the same CHM at a the same time. If you really need this, there is usually a better way to write your application which avoids this.
For example say you have 1000 threads but only 8 CPUs. This means only 8 threads at most will be running and accessing the CHM, assuming your program doesn't do anything useful e.g. anything else.
In real programs, it is rare for one collection to be used more than 10% of time. This is because there is usually some IO involved, or it makes sense to restructure threads to use there own copies of collections and collect them together at the end e.g. Map-Reduce
What is the performance overhear with large number of partitions in the Map?
You waste a bit of memory which doesn't matter, but mostly you waste some L1 cache which is limited to 32 KB and a relatively precious resources.