Mar*_*lty 17 java memory installer memory-management
我正在编写一个安装程序,它将调整产品的配置,以便运行它的特定硬件.特别是,我想确定系统中安装了多少物理RAM,以便估计在运行时分配给产品的内存量.
理想情况下,我想以独立于平台的纯Java方式执行此操作,因为安装程序需要在几个不同的平台上运行,但如果不可能,则首选Windows解决方案,因为这是最常见的部署平台.
在这种情况下,可以安全地假设产品将是盒子上运行的唯一/主要应用程序,因此我不必担心挤压其他任何人.我不想过度分配,因为根据我们的经验,这可能会损害性能.
Hor*_*ux7 19
您可以使用以下Java代码查询物理内存:
com.sun.management.OperatingSystemMXBean os = (com.sun.management.OperatingSystemMXBean)
java.lang.management.ManagementFactory.getOperatingSystemMXBean();
long physicalMemorySize = os.getTotalPhysicalMemorySize();
Run Code Online (Sandbox Code Playgroud)
但是这个包com.sun.management
是可选的,不需要在每个平台上都可用.
本地 JMX 和 MBean 怎么样?尝试这个:
MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer();
Object attribute = mBeanServer.getAttribute(new ObjectName("java.lang","type","OperatingSystem"), "TotalPhysicalMemorySize");
System.out.println("Total memory: "+ attribute.toString() +" B");
Run Code Online (Sandbox Code Playgroud)
您可以通过这种方式访问许多有用的信息。
对于 Windows,您需要访问 WMI - 这将帮助您:从 Java 访问 Windows Management Instrumentation (WMI)。
您将需要使用 WMI 的这一部分:Win32_LogicalMemoryConfiguration。
可能有一种纯java方法可以做到这一点,但我不知道。
归档时间: |
|
查看次数: |
11172 次 |
最近记录: |