I am writing a web-service that heavily relies on a single large Map that is completely updated once every hour. The rest of the time many threads concurrently read the table.
My question is: What is the most efficient construct to realize such a Map?
The Map can be rather larger (100 - 500 MB). There is only read access except once an hour where the whole map is replaced.
I was thinking about just using a Java HashMap and maybe using reflection to set the field final between the updates if this improves performance, but I have no clue how to make the JVM optimize for many concurrent reads.