回答
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. 有沒有一種使用unix shell命令來判斷是否有配置的IPv6接口的便攜方式?
- 3. c# - 有沒有一種更簡潔的方式來檢查變量是否是多種事情之一?
- 4. 最好的方法來檢查一個URL是否有效
- 5. 是否有一種便攜的方式來生成真正的隨機全局唯一標識符(guid)?
- 6. 是否有一種方法來獲取NSMutableArray的最大值和最小值
- 7. 便攜式方式
- 8. 哪一種更有效的方法來檢查count()函數是否爲空
- 9. 有沒有一種方便的方式來查找使用STL的容器中的最大元素?
- 10. size_t是否便攜?
- 11. jQuery決策樹,是否有比這更便攜的方式?
- 12. Java便攜式媒體檢測
- 13. 有沒有一種簡單的方法來檢查字段是否爲null?
- 14. 一種方法來檢查瀏覽器是否支持otf
- 15. i18n是否有「便攜」格式的字符串語法?
- 16. 是否有一種緊湊的方法來定義因變量?
- 17. 是否有任何方便的方法來定期檢查線程狀態?
- 18. 另一種檢查圖像url的方法是否有效
- 19. 在Rails中,是否有一種簡單的方法來檢查ActiveRecord的屬性?
- 20. 有沒有一種快速的方法來檢查一個變量是否屬於一個集合?
- 21. 在Java中查找總磁盤大小的便攜方法(java 6之前)
- 22. 有沒有一種方法,我可以告訴Python來檢查它是否是一個變量
- 23. 在進入for循環之前是否有一種簡短的方法來檢查數組大小?
- 24. 是否有一種方法來檢查iframe是否在加載頁面後是否有錯誤消息?
- 25. 在Z3中,是否有一種方法可以生成未定義數量的假設來檢查?
- 26. 有沒有一種合適的方法來檢查Java中的文件/目錄是否存在?
- 27. DirectoryInfo.LastWriteTime是一種安全的方式來檢查文件是否仍在上傳?
- 28. 便攜式獲取C/C++文件大小的方法
- 29. 檢查變量是否爲空的兩種不同方法
- 30. TSQL修剪 - 便攜式方法
這可能偶爾會起作用。考慮到不同的JVM和操作系統,我不會指望它。 – 2009-12-16 14:29:58
經過測試。它適用於Unix和MacOS。 它不是100%可移植的,因爲您必須將MXbean對象轉換爲特定於系統的MX Bean,但仍然是一個不錯的解決方案。 – 2009-12-16 14:51:12