我想了解JVM堆大小如何與創建對象不同。Java:爲什麼在創建對象後JVM堆大小沒有區別
例如,如果您看到我的下面的程序,我在for循環中創建了10000個字符串對象,但在我的JVM環境中堆大小仍然沒有差異。
public class One {
public static void main(String args[]) {
long heapSizebefore = Runtime.getRuntime().totalMemory();
System.out.println("heapSizebefore" + heapSizebefore);
for (int i = 0; i <= 10000; i++) {
String str = new String();
}
long heapSizeafter = Runtime.getRuntime().totalMemory();
System.out.println("heapSizeafter" + heapSizeafter);
}
}
大多數OO程序有很多的成員方法,因爲你不能訪問成員變量或實現靜態方法,接口關閉這個功能。但是如果你不需要做那些事情,那麼靜態方法是有道理的。它告訴調用者「我只是一個函數;我不需要一個對象來做任何事情」。然而,沒有任何理由讓方法因爲內存而變成靜態的 - 你可能最終只是創建一個對象作爲參數傳遞,所以沒有節省。 –
如果你想知道爲什麼我們在Java中使用靜態方法,爲什麼不問*這個問題呢?或者甚至更好,想一想問題,然後搜索「java靜態方法」,並閱讀其中的[many](http://stackoverflow.com/questions/2671496/java-when-to-use-static-methods ),[許多](http://stackoverflow.com/questions/538870/java-static-methods-best-practices),[重複](http://stackoverflow.com/questions/1618969/java-when-to -make-methods-static-v-instance)[](http://stackoverflow.com/questions/658407/static-methods)[it](http://stackoverflow.com/questions/3346764)。 –
請注意,在這些問題上,我已經刪除了問題中關於靜態方法的部分。每個問題只有一個問題,StackOverflow可以更好地工作,恕我直言,這個頁面現在是一個有效答案的具體,可搜索問題的更好例子。如果您想提出有關現有問題未涉及的靜態方法的問題,請隨時創建一個新的問題。 –