以下是一支簡易的 method,可以讓您了解程式的運作花了多少資源, 以便調整.
public class FreeMemoryTest {
public static void main(String[] args) {
//JVM 能從OS得到最大的記憶體,如果下了 -Xmx 參數,將以該參數為主
long maxMem = Runtime.getRuntime().maxMemory();
//JVM 已經從OS得到可使用的記憶體,會越取越多,直到 maxMemory 的最大容量,超過則會丟出 java.lang.OutOfMemoryError
long totalMem = Runtime.getRuntime().totalMemory();
//目前使用完剩下的記憶體
long startMem = Runtime.getRuntime().freeMemory();
long startTime = System.currentTimeMillis();
for (int i = 0; i <= 10000; i++) {
String str = "foo";
System.out.println(str);
}
long endMem = Runtime.getRuntime().freeMemory();
System.err.println("使用記憶體(Bytes): " + (startMem - endMem));
long endTime = System.currentTimeMillis();
System.err.println("使用時間(毫秒): " + (endTime - startTime));
System.err.println("總共記憶體(Bytes):" + totalMem);
System.err.println("目前最大記憶體(Bytes):" + maxMem);
}
}
詳細可再參考
透過 Java 參數來改善 Java 效能