He probado con esto pero nosé si es correcto:
Código
package memoria; import java.lang.management.MemoryMXBean; import java.lang.management.ManagementFactory; public class Main { Main apli = new Main(); apli.estadoMemoria(); } public void estadoMemoria() { long freeMemory = runtime.freeMemory(); long totalMemory = runtime.totalMemory(); long maxMemory = runtime.maxMemory(); MemoryMXBean mx = ManagementFactory.getMemoryMXBean(); long initMemory = mx.getHeapMemoryUsage().getInit() + mx.getNonHeapMemoryUsage().getInit(); long usedMemory = mx.getHeapMemoryUsage().getUsed() + mx.getNonHeapMemoryUsage().getUsed(); long committedMemory = mx.getHeapMemoryUsage().getCommitted() + mx.getNonHeapMemoryUsage().getCommitted(); long _maxMemory = mx.getHeapMemoryUsage().getMax() + mx.getNonHeapMemoryUsage().getMax(); } }
Me ha reportado estos datos:
Citar
Max Memory :499008.0 KB
Total Memory :32384.0 KB
Free Memory :32167.6015625 KB
Used Memory :216.3984375 KB
===============
Max memory:679232.0 KB
Committed memory:51072.0 KB
Init memory:51067.0 KB
Used memory:2695.0234375 KB
Total Memory :32384.0 KB
Free Memory :32167.6015625 KB
Used Memory :216.3984375 KB
===============
Max memory:679232.0 KB
Committed memory:51072.0 KB
Init memory:51067.0 KB
Used memory:2695.0234375 KB
Cuantos gigas libres tengo en el disco duro? con el editor de particiones e mirado y tengo 49.54 GiB y según este programa dice... "Free Memory :32167.6015625 KB"
Código corregido:
Código
package memoria; import java.lang.management.MemoryMXBean; import java.lang.management.ManagementFactory; import java.io.File; public class Main { Main apli = new Main(); apli.estadoMemoriaHeap(); apli.estadoMemoriaDiscoDuro(); } //estadisticas de la memoria del heap public void estadoMemoriaHeap() { long freeMemory = runtime.freeMemory(); long totalMemory = runtime.totalMemory(); long maxMemory = runtime.maxMemory(); MemoryMXBean mx = ManagementFactory.getMemoryMXBean(); long initMemory = mx.getHeapMemoryUsage().getInit() + mx.getNonHeapMemoryUsage().getInit(); long usedMemory = mx.getHeapMemoryUsage().getUsed() + mx.getNonHeapMemoryUsage().getUsed(); long committedMemory = mx.getHeapMemoryUsage().getCommitted() + mx.getNonHeapMemoryUsage().getCommitted(); long _maxMemory = mx.getHeapMemoryUsage().getMax() + mx.getNonHeapMemoryUsage().getMax(); } //estadisticas de la memoria del disco duro public void estadoMemoriaDiscoDuro(){ long totalSpace = file.getTotalSpace(); long freeSpace = file.getFreeSpace(); long UsableSpace = file.getUsableSpace(); } }
El método getUsableSpace() no es muy aproximado, mejor hacer la resta como dice Darhius.
Gracias por contestar a todos