Estoy tratando de calcular cuánta memoria hay disponible para mi programa Java. tengo esta implementación actual:¿Cuál es la mejor forma de calcular la memoria disponible en 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;
}
¿Es eso cierto? ¿Hay una forma más fácil/más precisa de calcular esta información? Después de mirar a alguien código otra cosa, vi algo como esto que es ligeramente diferente:
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;
}
De todos modos, ¿cuál es el camino correcto para llegar a esta información?
Su solución me parece correcta. – Adrian
Pensé que eran lo mismo pero ahora veo que el segundo te acaba de dar (máximo - total). – trutheality
Creo que debe poner parte de su pregunta como respuesta, para que esta pueda ser presentada como una pregunta respondida. [Debo responder mis propias preguntas] (http://meta.stackexchange.com/questions/12513/should-i-not-answer-my-own-questions) – Jarekczek