docker查看jvm内存占用
一。进入docker容器的宿主机,查看运行指定镜像的容器id(结果的第一列):
docker ps | grep myImageName(或docker ps | grep java)
二。进入容器内部:
docker exec -it containerId sh
三。直接输入top命令:
top
可看到基本的容器占用的信息:pid、vsz、cpu、command等。(ctrl+c 或 q,退出top)
四。查看更具体的jvm内存占用:
top -m
其中,vsz:Virtual Memory Size,虚拟内存大小,表明了该进程可以访问的所有内存,包括被交换的内存和共享库内存。
rss: Resident Set Size,常驻内存集合大小,表示进程在RAM中占用了多少内存,并不包含在SWAP中占用的虚拟内存。即使是在内存中的使用了共享库的内存大小也一并计算在内,包含了完整的在stack和heap中的内存。
SHR:shared memory,共享内存。
补充:
ps -ef | grep java 或 docker top 容器id ,可查看pid的一些信息。
ps aux | grep java。
top -p pid。
RSS 是常驻内存集(Resident Set Size),表示该进程分配的内存大小。
RSS 不包括进入交换分区的内存。
RSS 包括共享库占用的内存(只要共享库在内存中)
RSS 包括所有分配的栈内存和堆内存。
VSZ 表示进程分配的虚拟内存。
VSZ 包括进程可以访问的所有内存,包括进入交换分区的内容,以及共享库占用的内存。
VSZRW:未百度到具体含义,猜测:初始申请的虚拟内存大小。
docker stats 容器名 或 docker stats 容器id,结果如下:
CONTAINER CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS