回答
JMX可以訪問FreePhysicalMemorySize和TotalPhysicalMemorySize屬性更多的內存java.lang:type = OperatingSystem。這些屬性在JavaDocs中沒有真正記錄,所以它們可能無法在所有JVM和平臺上得到保證,但它們對我來說是可用的(使用Sun的JVM)。
在Java代碼中你可以通過訪問該MBean:ManagementFactory.getOperatingSystemMXBean()
這些屬性是documented in the JavaDoc for Sun's implementation所以我覺得你可以依靠他們,如果你的應用程序在他們的JVM上運行。
簡短的回答:沒有,沒有可移植的方式來獲得總RAM。
當然,有一個非常簡單的方法可以獲得總的JVM內存(java.lang.Runtime.maxMemory()
),但這不是你所追求的。
要獲得總系統RAM大小,你需要求助於原生系統調用(這是完全不可移植)。
我很害怕。謝謝不過:-) 我想我將不得不寫一個頂部| grep for linux,併爲Windows提出了一些奇特的解決方案。 – 2009-12-16 14:05:54
你可以使用JNI調用來查詢本地操作系統
,但你將不得不重新啓動JVMwith新的內存參數,如果你想爲JMV
「可用RAM的最大數量」 - 所以不是我假設安裝的物理RAM?但是(1)可被OS訪問的部分,(2)不用於存儲OS代碼,以及(3)不用於存儲OS數據?
問題是,當操作系統將髒頁面刷新到磁盤時,此答案每毫秒更改一次,從而減少上面的第(3)部分。如果真的需要RAM,操作系統通常會將部分內存交換出去,因此爲(2)分配的RAM數量也是模糊的。
我們可能需要跳過虛擬系統本身在虛擬機中運行的情況,因此您需要在虛擬機的操作系統中安裝JVM。
- 1. 矢量調整大小 - 便攜式檢測方式
- 2. 是否有OS X的便攜式GCC?
- 3. 有沒有一種使用unix shell命令來判斷是否有配置的IPv6接口的便攜方式?
- 4. c# - 有沒有一種更簡潔的方式來檢查變量是否是多種事情之一?
- 5. 最好的方法來檢查一個URL是否有效
- 6. 是否有一種便攜的方式來生成真正的隨機全局唯一標識符(guid)?
- 7. 是否有一種方法來獲取NSMutableArray的最大值和最小值
- 8. 便攜式方式
- 9. 哪一種更有效的方法來檢查count()函數是否爲空
- 10. 使用boost :: asio是否有一種便攜的方式來找出免費的端口號
- 11. size_t是否便攜?
- 12. 有沒有一種方便的方式來查找使用STL的容器中的最大元素?
- 13. jQuery決策樹,是否有比這更便攜的方式?
- 14. 有沒有一種簡單的方法來檢查字段是否爲null?
- 15. Java便攜式媒體檢測
- 16. 一種方法來檢查瀏覽器是否支持otf
- 17. 如何檢查文件是否以便攜方式存在於C++中?
- 18. 是否有一種緊湊的方法來定義因變量?
- 19. 是否有任何方便的方法來定期檢查線程狀態?
- 20. 另一種檢查圖像url的方法是否有效
- 21. 在Rails中,是否有一種簡單的方法來檢查ActiveRecord的屬性?
- 22. 有沒有一種快速的方法來檢查一個變量是否屬於一個集合?
- 23. 在Java中查找總磁盤大小的便攜方法(java 6之前)
- 24. 我有一種方法來檢測apk是否被混淆了?
- 25. 最簡單的方法來檢查整數是+1或-1 Java
- 26. 有沒有一種方法,我可以告訴Python來檢查它是否是一個變量
- 27. python的hash()是否便攜?
- 28. FB IOS SDK是否提供了一種方法來檢查accesstoken的有效性?
- 29. 最有效的方法來檢查,看看是否有一個SQL行
- 30. 在進入for循環之前是否有一種簡短的方法來檢查數組大小?
這可能偶爾會起作用。考慮到不同的JVM和操作系統,我不會指望它。 – 2009-12-16 14:29:58
經過測試。它適用於Unix和MacOS。 它不是100%可移植的,因爲您必須將MXbean對象轉換爲特定於系統的MX Bean,但仍然是一個不錯的解決方案。 – 2009-12-16 14:51:12