我想问关于虚拟机状态。
我在 Linux 内核(RHEL 7.3)之上运行 jvm 引擎,并且想知道哪个进程可以使用的实际内存。
我使用 vmstat 查看可用内存量,但我不确定报告是否包括java 堆提交字节数或者java 堆已使用字节数。
下面是我使用的 vmstat 的示例。我的环境是
OS mem : 4GB
JVM Heap : 2GB
[ywatanabe@localhost tmp]$ vmstat 1 3
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
2 0 0 771932 2108 546772 0 0 34 81 189 161 5 1 95 0 0
0 0 0 771932 2108 546776 0 0 0 0 82 115 0 1 99 0 0
0 0 0 771932 2108 546776 0 0 0 0 74 111 0 0 100 0 0
这是哪个自由的列排除?java 堆提交字节数或者java 堆已使用字节数?
答案1
vmstatfree
列报告的数量身体的内存(RAM),不包含系统使用或可用的任何内容,因此可以立即分配。
Java 堆已提交bytes 表示的数量虚拟的JVM 向操作系统请求的内存。
使用的 Java 堆bytes 表示的数量虚拟的包含实际数据(对象)的内存。
鉴于虚拟内存可能存在于 RAM、磁盘(文件或交换)或任何地方,您无法可靠地比较 RAM 和虚拟内存的使用情况。