Я пытаюсь подсчитать, сколько памяти доступно моей Java-программе.У меня есть текущая реализация:
long getAvailableMemory() {
Runtime runtime = Runtime.getRuntime();
long totalMemory = runtime.totalMemory();
long freeMemory = runtime.freeMemory();
long maxMemory = runtime.maxMemory();
long usedMemory = totalMemory - freeMemory;
long availableMemory = maxMemory - usedMemory;
return availableMemory;
}
Это правильно?Есть ли более простой / точный способ расчета этой информации?Посмотрев на чужой код, я увидел нечто вроде этого, немного отличающееся:
long getAvailableMemory() {
long totalVmHeap = Runtime.getRuntime().totalMemory();
long freeVmHeap = Runtime.getRuntime().freeMemory();
long usedVmHeap = totalVmHeap - freeVmHeap;
long maxVmHeap = Runtime.getRuntime().maxMemory();
long availableVmHeap = maxVmHeap - usedVmHeap + freeVmHeap;
return availableVmHeap;
}
В любом случае, как правильно получить эту информацию?