定时打印jmap-jvm内存趋势

目前有的那些jvm工具,界面都太难看了,严重影响我的调bug心情
所以我打算直接用jmap来看内存中都有什么东西
但是为什么不直接看gc日志中的Full GC频率呢
因为这个东西跟jvm内存分配和内存大小有关系,而我关心的是内存积存趋势
比如说,举个极端的例子,jvm内存很小,那么肯定每时每刻都在Full GC
但是你的代码真的这么差吗,不一定
但是如果条件很好,jvm内存设定的很大,那么几个月内都不会很频繁的Full GC
但是你的代码真的这么好吗,也不一定
所以归根结底要看内存中的对象是不是一直在累积增长
那么jmap就是个不错的东西

我们知道jmap打印的东西,jmap -histo pid是这个样的:
定时打印jmap-jvm内存趋势_第1张图片
又臭又长
而且下面的都是内存中只有几个的,没有价值
所以我打算只取前9行,jmap -histo pid | head -12
定时打印jmap-jvm内存趋势_第2张图片
但是总不能手动输出这个东西,所以我打算用crontab来定时打印它

#!/bin/bash  
step=5 #间隔的秒数,不能大于60  
echo "get in loop"
for (( i = 0; i < 55; i=(i+step) )); do  
    echo "in loop"
    oldifs="$IFS"
    IFS=$'\n'
    for lines in `jmap -hist

你可能感兴趣的:(jvm,jvm,jmap,内存泄漏,永久代)