获得Tomcat的内存信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
/**
* 获得Tomcat的内存信息
* @return
*/

private Map<String, Object> getMemoryInfo() {
Map<String, Object> memDataMap = new HashMap<String, Object>();

double MB = 1024.0 * 1024.0;

//当前JVM的最大可用内存
double maxMemory = (Runtime.getRuntime().maxMemory()) / MB;

//当前JVM占用的内存总数
double totalMemory = (Runtime.getRuntime().totalMemory()) / MB;

//因为JVM只有在需要内存时才占用物理内存使用,所以freeMemory()的值一般情况下都很小
double freeMemory = (Runtime.getRuntime().freeMemory()) / MB;

//JVM实际可用内存
double totalUsableMemory = maxMemory - totalMemory + freeMemory;

memDataMap.put("totalUsableMemory", totalUsableMemory);
memDataMap.put("totalMemory", totalMemory);
memDataMap.put("maxMemory", maxMemory);

NumberFormat nt = NumberFormat.getPercentInstance();
nt.setMinimumFractionDigits(2);
memDataMap.put("memUsage", nt.format(totalMemory / maxMemory));

return memDataMap;
}