可用内存:我的目标指标
Java :我选择的工具。
??? :使用后者获得前者的好方法。
答案 0 :(得分:1)
这个question有一些你可以找到有用的好信息。
答案 1 :(得分:1)
可能是这样的,使用Java Native Interface(JNI):
Kernel32 lib = (Kernel32) Native.loadLibrary ("kernel32",Kernel32.class);
Kernel32.MEMORYSTATUS mem = new Kernel32.MEMORYSTATUS ();
lib.GetMem(mem);
System.out.println ("Available physical memory " + mem.dwAvailPhys);
答案 2 :(得分:0)
如果不诉诸非便携式或本地库,很难做到。
像
这样的东西Runtime.getRuntime().freeMemory()
只会返回JVM可用的内存,这可能与系统范围内的可用内存不同。
这个页面提供了一个很好的纲要。
http://blog.codebeach.com/2008/02/determine-available-memory-in-java.html
答案 3 :(得分:0)
通过执行命令free -m
然后解释如下,以获取可用RAM :
Runtime runtime = Runtime.getRuntime();
BufferedReader br = new BufferedReader(
new InputStreamReader(runtime.exec("free -m").getInputStream()));
String line;
String memLine = "";
int index = 0;
while ((line = br.readLine()) != null) {
if (index == 1) {
memLine = line;
}
index++;
}
// total used free shared buff/cache available
// Mem: 15933 3153 9683 310 3097 12148
// Swap: 3814 0 3814
List<String> memInfoList = Arrays.asList(memLine.split("\\s+"));
int totalSystemMemory = Integer.parseInt(memInfoList.get(1));
int totalSystemUsedMemory = Integer.parseInt(memInfoList.get(2));
int totalSystemFreeMemory = Integer.parseInt(memInfoList.get(3));
System.out.println("Total system memory in mb: " + totalSystemMemory);
System.out.println("Total system used memory in mb: " + totalSystemUsedMemory);
System.out.println("Total system free memory in mb: " + totalSystemFreeMemory);
答案 4 :(得分:-1)
我知道已经购买了JNIWrapper的两个项目并对结果感到满意。两种基于Windows的用法。当我将它嵌入到我们当前的项目中时,我们想知道当用户启动我们的应用程序(WebStart)时有多少免费ram可用,因为有很多性能投诉很难调查(我们怀疑是RAM问题)。 JNIWrapper帮助我们在启动时收集有关免费ram,总数和CPU等的统计数据,因此如果用户组抱怨,我们可以检查我们的统计数据,看看他们是否已经获得了狡猾的机器。拯救生命。