У меня есть Map
в памяти, в которой хранятся мои объекты. Я хочу сбросить в память, когда у меня заканчивается память. Я делаю это прямо сейчас:
void add(K key, V value) {
if (underPressure()) {
flush(innerMap);
}
innerMap.add(k, v);
}
boolean underPressure() {
Runtime rt = Runtime.getRuntime();
long maxMemory = rt.maxMemory();
long freeMemory = rt.freeMemory();
return (double) freeMemory / maxMemory < threshold;
}
Поскольку underPressure ()
вызывается при каждой вставке, насколько это дорого? Насколько я понимаю, это приблизительное значение, оно должно быть каким-то образом кэшировано jvm, но знает ли кто-нибудь об этом больше на самом деле?