Java内存监控和分析经典命令

  1. jstat
    jstat -gcutil pid 20


    image.png

    20毫秒监控一次17966进程的内存使用情况,E代表新生代。O代表老年代,FGC是全局回收的次数,
    O不能一直增加,E回收的时候关注下拉近回收的速度

  2. 内存监控
    a. 检测程序是否存在内存泄露问题,主要通过稳定性测试时观察内存占用情况,如果内存增加比较明显(特别是计算内存)则需要对进程进行分析
    查看某进程内存占用的情况(内存泄露检测)
    Ps u 显示面向用户的输出。包括user,pid,%cpu,%mem,sz,rss,tty,stat,stime,time,command
    Ps v显示
    Ps x显示没有终端的进程除了有一个控制终端的进程。
    使用方法:Ps v 进程号
    其中与内存相关的值:
    RSS-进程实内存的大小,用KB表示;
    SIZE-进程数据节的虚拟大小,单位1KB。动态分配内存会引起SIZE的变化。
    SSIZ-内核堆栈大小。对于多线程进程,该值总为零。
    TRS-文本的驻留集大小。
    TSIZ-文本(共享内存)映像的大小。
    重点关注RSS、SIZE
    若是进程稳定运行一段时间后,进程的RSS和SIZE仍持续不停的增长,说明进程存在内存泄露的问题。
    b. 查看进程所占用的内存详细信息 jmap –heap 进程号
  3. 分析java内容泄漏:
    a、jmap -dump:format=b,file=heap.bin pid
    b、用MAT工具进行分析

你可能感兴趣的:(Java内存监控和分析经典命令)