【发布时间】:2012-06-14 15:18:40
【问题描述】:
我试图找出 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、many、duplicatesofit之一。
-
请注意,按照这些思路,我已经删除了您询问静态方法的部分问题。 StackOverflow 每个问题只有一个问题,效果更好,恕我直言,这个页面现在是一个更好的例子,一个具体的、可搜索的问题和一个有效的答案。如果您想就现有问题未涵盖的静态方法提出问题,请随意创建一个新方法。
标签: java