我正在羣集上運行一個大的Java應用程序,並且我有很多可用的內存。因此,我計劃以最大的堆大小啓動我的JVM,並確保它可以正常工作。然而,我需要多次運行這個,我想知道在運行期間堆實際上有多大。我知道我可以用VisualVM這樣的工具來做到這一點,但如果我不想運行一個基於ui的大型應用程序呢?是否有一些參數可以發送給jvm,以便在我的應用程序終止後獲得某種內存統計信息?或者可能是一個基於命令行的應用程序,可以輕鬆完成它?如何在運行後找到Java堆的最大大小?
1
A
回答
3
jstat
是你所追求的。它會每秒打印統計數據(或者您指定的任何數據),然後您可以分析輸出以找到最大值。
1
1
U可以進行以下方法使用它來獲取堆大小
調用Runtime.getRuntime()的值totalMemory( );
2
你可以在應用程序中做到這一點:
ManagementFactory.getMemoryMXBean().getHeapMemoryUsage();
然後使用返回MemoryUsage
對象上getCommitted()
,getUsed()
和getMax()
方法。一個程序的
0
總使用/空閒存儲器可以在程序經由java.lang.Runtime.getRuntime();
獲得運行時具有涉及存儲幾個方法。以下編碼示例演示了它的用法。
運行時有幾種與內存相關的方法。以下編碼示例演示了它的用法。
import java.util.ArrayList;
import java.util.List;
public class PerformanceTest {
private static final long MEGABYTE = 1024L * 1024L;
public static long bytesToMegabytes(long bytes) {
return bytes/MEGABYTE;
}
public static void main(String[] args) {
// I assume you will know how to create a object Person yourself...
List<Person> list = new ArrayList<Person>();
for (int i = 0; i <= 100000; i++) {
list.add(new Person("Jim", "Knopf"));
}
// Get the Java runtime
Runtime runtime = Runtime.getRuntime();
// Run the garbage collector
runtime.gc();
// Calculate the used memory
long memory = runtime.totalMemory() - runtime.freeMemory();
System.out.println("Used memory is bytes: " + memory);
System.out.println("Used memory is megabytes: "
+ bytesToMegabytes(memory));
}
}
相關問題
- 1. 如何找到最大堆棧大小?
- 2. 在Java中,如何找出我的最大堆大小?
- 3. 在Java中減少運行時的最大堆棧大小
- 4. 如何找出配置的最大java堆大小?
- 5. 如何在運行時發現最大堆大小
- 6. 正在運行的Linux進程的最大堆大小
- 7. 預留Java JVM最大堆大小
- 8. Nexus的最大堆大小?
- 9. 達到的最大堆棧大小
- 10. java堆設置中的最大堆大小的限制
- 11. 如何找到我的電腦上的Java堆大小?
- 12. 如果知道最大堆大小,如何計算最大對象大小?
- 13. 如何爲Java(xmx)設置默認最大堆大小,Linux(centos)
- 14. 最大堆大小xmx如何影響Java中的內存分配/使用堆?
- 15. Netbeans堆大小java
- 16. Java堆/池大小
- 17. 關於堆(最大堆和最小堆)
- 18. 如何在.net中查找當前線程的最大堆棧大小?
- 19. Android上本機堆的最大大小?
- 20. -Xms:初始堆大小或最小堆大小?
- 21. 爲JBoss指定最佳的最小和最大堆大小
- 22. JMP中的Java堆大小
- 23. Java堆大小的使用
- 24. 如何才能找到最大子集的最大差異爲5的大小?
- 25. netbeans中的Tomcat堆大小增加以及如何查找當前堆大小
- 26. 從命令行獲取運行JVM的最大堆大小:否JDK工具
- 27. 的Java Webstart的最大堆大小導致JVM無法啓動
- 28. 爲什麼Java堆的最大大小是固定的?
- 29. 的Java無效的最大堆大小Windows遠程桌面
- 30. 如何增加在Windows下運行的JVM堆大小?
哇,看起來很複雜... – jonalv 2011-12-14 10:43:08