====== Checking Memory Allocation ======
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