1、關于Runtime的totalMemory和freeMemory的區別
很簡單,totalMemory就是目前jvm中的內存總量,這個值是可以變的,最大等于你設定的jvm可用最大內存總量(eg.-Xmx512M表明你的jvm最大內存量就是512M),最小等于你設定的jvm最小內存總量(-Xms128M)。
freeMomory就是當前jvm中可以用來分配的內存量。
2、為了檢測一個方法到底是多么的耗費內存,我寫了個線程來監視它,在方法調用之前啟動該線程,調用后停止該線程,線程執行期間會定期的打印出內存情況到控制臺。
public class MemoryListner implements Runnable {
private boolean stop1;
public MemoryListner(boolean stop) {
this.stop1 = stop;
}
public void run() {
while (!stop1) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Runtime.getRuntime().totalMemory()+":"+Runtime.getRuntime().freeMemory());
}
System.out.println("Complete");
}
public void stop(){
this.stop1 = true;
}
}