We can run the following code to estimate Java VM memory usage in run-time: (Original from StackOverFlow Jeremy answer https://stackoverflow.com/questions/74674/how-do-i-check-cpu-and-memory-usage-in-java with a little modification for console)
To estimate the memory usage of a section, we can user 'System.gc()
' to clean up the memory beforehand.
Runtime runtime = Runtime.getRuntime(); NumberFormat format = NumberFormat.getInstance(); StringBuilder sb = new StringBuilder(); long maxMemory = runtime.maxMemory(); long allocatedMemory = runtime.totalMemory(); long freeMemory = runtime.freeMemory(); sb.append("free memory: " + format.format(freeMemory) + "\n"); sb.append("allocated memory: " + format.format(allocatedMemory) + "\n"); sb.append("estimate memory usage: " + format.format(allocatedMemory - freeMemory) + "\n"); sb.append("max memory: " + format.format(maxMemory) + "\n"); sb.append("total free memory: " + format.format((freeMemory + (maxMemory - allocatedMemory))) + "\n"); System.out.println(sb.toString());
Output (unit in byte), where estimate memory usage is the used memory:
free memory: 456,934,968 allocated memory: 935,329,792 estimate memory usage: 478,394,824 max memory: 3,294,101,504 total free memory: 2,815,706,680