命令是:
jps|grep CommandTest|awk {'print $1'}|xargs -I '{}' jcmd {} GC.class_histogram|grep CommandTest
作用是:启动CommandTest类,并查看它占用的内存大小。
解析:
1、CommandTest类:
public class ConcurrentMapTest {
int a;
int aa;
int aaa;
public static void main(String[] args) throws Exception {
ConcurrentMapTest t = new ConcurrentMapTest();
while (true) {
Thread.sleep(10000);
}
}
}
2、命令是嵌套的,拆成每个部分如下:
// jps获取运行的jvm列表,过滤出CommandTest的行
jps|grep CommandTest
// 取出第一列,也就是进程id
awk {'print $1'}
// 把上一步的pid作为参数,代入后续命令(也就是jcmd之后的部分)
xargs -I '{}' jcmd {} GC.class_histogram|grep CommandTest
// 使用jcmd命令打印堆对象的信息,grep过滤CommandTest类对象
jcmd {} GC.class_histogram|grep CommandTest
命令执行结果如下:其中24字节,即为其占用的内存大小,1是数量
152: 1 24 com.test.CommandTest