精华内容
下载资源
问答
  • Linux下实用JAVA内存泄露监控命令

    千次阅读 2015-09-14 18:23:17
    内存泄露一直是比较头疼事情,下面三个命令我个人觉得相当有用。 1、jstack (linux下特有) 可以观察到jvm中当前所有线程运行情况和线程当前状态 jstack 2083 输出内容如下: 2、...

    内存泄露一直是比较头疼的事情,下面三个命令我个人觉得相当有用。

    1、jstack (linux下特有)

    可以观察到jvm中当前所有线程的运行情况和线程当前状态

    jstack 2083

    输出内容如下:


    2、jmap (linux下特有,也是很常用的一个命令)

    观察运行中的jvm物理内存的占用情况。

    参数如下:

    -heap :打印jvm heap的情况
       -histo: 打印jvm heap的直方图。其输出信息包括类名,对象数量,对象占用大小。
       -histo:live : 同上,但是只答应存活对象的情况
       -permstat: 打印permanent generation heap情况

    3、jstat

    这是jdk命令中比较重要,也是相当实用的一个命令,可以观察到classloader,compiler,gc相关信息

    具体参数如下:

    -class:统计class loader行为信息

    -compile:统计编译行为信息

    -gc:统计jdk gc时heap信息

    -gccapacity:统计不同的generations(不知道怎么翻译好,包括新生区,老年区,permanent区)相应的heap容量情况

    -gccause:统计gc的情况,(同-gcutil)和引起gc的事件

    -gcnew:统计gc时,新生代的情况

    -gcnewcapacity:统计gc时,新生代heap容量

    -gcold:统计gc时,老年区的情况

    -gcoldcapacity:统计gc时,老年区heap容量

    -gcpermcapacity:统计gc时,permanent区heap容量

    -gcutil:统计gc时,heap情况

    -printcompilation:不知道干什么的,一直没用过。

    一般比较常用的几个参数是:

     jstat -class 2083 1000 10 (每隔1秒监控一次,一共做10次)

    参数解释:

    Options — 选项,我们一般使用 -gcutil 查看gc 情况

    vmid — VM 的进程号,即当前运行的java 进程号

    interval– 间隔时间,单位为秒或者毫秒

    count — 打印次数,如果缺省则打印无数次

    S0 — Heap 上的 Survivor space 0 区已使用空间的百分比

    S1 — Heap 上的 Survivor space 1 区已使用空间的百分比

    E — Heap 上的 Eden space 区已使用空间的百分比

    O — Heap 上的 Old space 区已使用空间的百分比

    P — Perm space 区已使用空间的百分比

    YGC — 从应用程序启动到采样时发生 Young GC 的次数

    YGCT– 从应用程序启动到采样时 Young GC 所用的时间( 单位秒 )

    FGC — 从应用程序启动到采样时发生 Full GC 的次数

    FGCT– 从应用程序启动到采样时 Full GC 所用的时间( 单位秒 )

    GCT — 从应用程序启动到采样时用于垃圾回收的总时间( 单位秒)



    展开全文
  • 一、Linux 命令1、jstack (linux下特有)可以观察到jvm中当前所有线程运行情况和线程当前状态jstack 2083输出内容如下: 2、jmap (linux下特有,也是很常用一个命令)观察运行中jvm物理内存的占用情况。...

    一、Linux 命令

    1、jstack (linux下特有)

    可以观察到jvm中当前所有线程的运行情况和线程当前状态

    jstack 2083

    输出内容如下:

    d265e7c9fe7f0d608b82c0fd20f3ae51.png

    2、jmap (linux下特有,也是很常用的一个命令)

    观察运行中的jvm物理内存的占用情况。

    参数如下:

    -heap :打印jvm heap的情况

    -histo: 打印jvm heap的直方图。其输出信息包括类名,对象数量,对象占用大小。

    -histo:live : 同上,但是只答应存活对象的情况

    -permstat: 打印permanent generation heap情况

    jmap -dump:format=b,file=dumpfile.hprof 

    将日志信息输出到当前路径,文件名dumpfile.hprof pid 进程号

    MAT 工具:

    https://www.cnblogs.com/larack/p/6071209.html

    3、jstat

    这是jdk命令中比较重要,也是相当实用的一个命令,可以观察到classloader,compiler,gc相关信息

    具体参数如下:

    -class:统计class loader行为信息

    -compile:统计编译行为信息

    -gc:统计jdk gc时heap信息

    -gccapacity:统计不同的generations(不知道怎么翻译好,包括新生区,老年区,permanent区)相应的heap容量情况

    -gccause:统计gc的情况,(同-gcutil)和引起gc的事件

    -gcnew:统计gc时,新生代的情况

    -gcnewcapacity:统计gc时,新生代heap容量

    -gcold:统计gc时,老年区的情况

    -gcoldcapacity:统计gc时,老年区heap容量

    -gcpermcapacity:统计gc时,permanent区heap容量

    -gcutil:统计gc时,heap情况

    -printcompilation:不知道干什么的,一直没用过。

    一般比较常用的几个参数是:

    jstat -class 2083 1000 10 (每隔1秒监控一次,一共做10次)

    参数解释:

    Options — 选项,我们一般使用 -gcutil 查看gc 情况

    vmid — VM 的进程号,即当前运行的java 进程号

    interval– 间隔时间,单位为秒或者毫秒

    count — 打印次数,如果缺省则打印无数次

    S0 — Heap 上的 Survivor space 0 区已使用空间的百分比

    S1 — Heap 上的 Survivor space 1 区已使用空间的百分比

    E — Heap 上的 Eden space 区已使用空间的百分比

    O — Heap 上的 Old space 区已使用空间的百分比

    P — Perm space 区已使用空间的百分比

    YGC — 从应用程序启动到采样时发生 Young GC 的次数

    YGCT– 从应用程序启动到采样时 Young GC 所用的时间( 单位秒 )

    FGC — 从应用程序启动到采样时发生 Full GC 的次数

    FGCT– 从应用程序启动到采样时 Full GC 所用的时间( 单位秒 )

    GCT — 从应用程序启动到采样时用于垃圾回收的总时间( 单位秒)

    展开全文
  • 观察运行中jvm物理内存的占用情况。 参数如下: -heap :打印jvm heap情况 -histo: 打印jvm heap直方图。其输出信息包括类名,对象数量,对象占用大小。 -histo:live : 同上,但是只答应存活对象...

    一、Linux 命令

    1、jstack (linux下特有)

    可以观察到jvm中当前所有线程的运行情况和线程当前状态

    jstack 2083

    输出内容如下:

    fb3316f8c8795ff7659354c403b64bd3fff.jpg

    2、jmap (linux下特有,也是很常用的一个命令)

    观察运行中的jvm物理内存的占用情况。

    参数如下:

    -heap :打印jvm heap的情况
       -histo: 打印jvm heap的直方图。其输出信息包括类名,对象数量,对象占用大小。
       -histo:live : 同上,但是只答应存活对象的情况
       -permstat: 打印permanent generation heap情况

     jmap -dump:format=b,file=dumpfile.hprof <pid> 

    将日志信息输出到当前路径,文件名dumpfile.hprof pid 进程号

    MAT 工具:

    https://www.cnblogs.com/larack/p/6071209.html

    3、jstat

    这是jdk命令中比较重要,也是相当实用的一个命令,可以观察到classloader,compiler,gc相关信息

    具体参数如下:

    -class:统计class loader行为信息

    -compile:统计编译行为信息

    -gc:统计jdk gc时heap信息

    -gccapacity:统计不同的generations(不知道怎么翻译好,包括新生区,老年区,permanent区)相应的heap容量情况

    -gccause:统计gc的情况,(同-gcutil)和引起gc的事件

    -gcnew:统计gc时,新生代的情况

    -gcnewcapacity:统计gc时,新生代heap容量

    -gcold:统计gc时,老年区的情况

    -gcoldcapacity:统计gc时,老年区heap容量

    -gcpermcapacity:统计gc时,permanent区heap容量

    -gcutil:统计gc时,heap情况

    -printcompilation:不知道干什么的,一直没用过。

    一般比较常用的几个参数是:

     jstat -class 2083 1000 10 (每隔1秒监控一次,一共做10次)

    参数解释:

    Options — 选项,我们一般使用 -gcutil 查看gc 情况

    vmid — VM 的进程号,即当前运行的java 进程号

    interval– 间隔时间,单位为秒或者毫秒

    count — 打印次数,如果缺省则打印无数次

    S0 — Heap 上的 Survivor space 0 区已使用空间的百分比

    S1 — Heap 上的 Survivor space 1 区已使用空间的百分比

    E — Heap 上的 Eden space 区已使用空间的百分比

    O — Heap 上的 Old space 区已使用空间的百分比

    P — Perm space 区已使用空间的百分比

    YGC — 从应用程序启动到采样时发生 Young GC 的次数

    YGCT– 从应用程序启动到采样时 Young GC 所用的时间( 单位秒 )

    FGC — 从应用程序启动到采样时发生 Full GC 的次数

    FGCT– 从应用程序启动到采样时 Full GC 所用的时间( 单位秒 )

    GCT — 从应用程序启动到采样时用于垃圾回收的总时间( 单位秒)

     

    转载于:https://my.oschina.net/rechardchensir/blog/2934448

    展开全文
  • 利用linuxmtrace命令定位内存泄露(Memory Leak)

    万次阅读 热门讨论 2015-06-25 23:33:48
    以你我手机为例(假设不经常关机), 如果每天泄露一些内存, 那么开始一个星期, 你会发现手机好好, 当内存泄露积累到一定程度, 那就是各种卡死了, 系统异常, 最后死机, 不得不重启。 如果搞开发, ...

            一谈到内存泄露, 多数程序员都闻之色变。

            没错, 内存泄露很容易引入, 但很难定位。  

     

            以你我的手机为例(假设不经常关机), 如果每天泄露一些内存, 那么开始的一个星期, 你会发现手机好好的, 当内存泄露积累到一定程度,  那就是各种卡死了, 系统异常, 最后死机, 不得不重启。

            如果搞开发, 遇到内存泄露问题, 那就呵呵了。

            你可能先得花好几天来复现问题(泄露积累), 然后需要花好几天来定位问题和修改问题, 然后又要花好几天来验证问题, 而且, 很有可能没法一次改好, 上述流程又要循环了。 确实挺苦逼的。

     

            我个人认为, 在内存泄露问题上, 主动预防比被动定位要划算得多, 但无论你怎么预防, 总有掉链子的时候, 所以, 有时候不得不去被动定位内存泄露。

     

            在本文中, 暂不谈论手机内存泄露问题的定位, 仅仅介绍一个有用的linux小命令:mtrace(memory trace), 它可以用来协助定位内存泄露。 搞开发的, 应该或多或少地听说过mtrace.

     

            下面, 我们来看看程序:

    #include <stdio.h>
    
    int main()
    {
            setenv("MALLOC_TRACE", "taoge.log", "1");
            mtrace();
    
            int *p = (int *)malloc(2 * sizeof(int));
    
            return 0;
    }

           有的朋友要说了, 一眼就能看出内存泄露啊。 但是, 当程序大了之后, 怎能仅仅依靠肉眼? 好, mtrace该出场了。

     

     

            编译:

            gcc -g -DDEBUG test.c   (千万要注意, -g不可漏掉, 否则, 虽然最后能定位到内存泄露, 但却找不到在代码的第几行。由于我代码中没有Debug宏控制, 所以编译时, -DDEBUG是可以省略的, 因此, 直接写成gcc -g test.c即可)

     

            运行:

            ./a.out

     

            定位:

            mtrace a.out taoge.log

     

            结果:

           可以看到, 有内存泄露,且正确定位到了代码的行数。

     

           我们想一下mtrace函数/命令的原理, 其实也很简单, 无非就是记录每一对malloc/free的调用情况, 从这个意义上来讲, mtrace替代了部分我们的眼睛, 紧紧地盯着malloc/free, 所以能看到泄露还是不泄露啊。

     

     

           说明一下:

           我的linux上并没有安装mtrace命令, 所以无法调试, 在网友Jukay的帮助下, 我才接触到shiyanlou这个优秀的在线工具, 地址是:https://www.shiyanlou.com/ , 大家不需要注册, 直接用QQ登录即可, 上面的过程就是在shiyanlou中做的。 没有linux环境的朋友们, 以后就可以在这上面玩了, 不要再扯理由说没有linux环境啦。 再次感谢Jukay介绍这么优秀的在线工具。

     

           OK,  本文先写到这里, 后续会继续介绍一些与linux有关的基本调试工具和方法。

     

     

     


     

    展开全文
  • #内存泄露# linux常用内存相关命令

    万次阅读 2020-06-19 11:14:34
     free 命令会显示系统内存的使用情况,包括物理内存、交换内存(swap)和内核缓冲区内存等。 $ free total used free shared buff/cache available Mem: 8047480 6142828 154116 465584 1750536 1078080 Swap: ...
  • 利用linuxmtrace命令定位内存泄露 Memory Leak
  • 一谈到内存泄露, 多数程序猿都闻之色变。 没错, 内存泄露非常easy引入。 但非常难定位。 以你我手机为例(如果不常常关机)。 如果每天泄露一些内存, 那么開始一个星期, 你会发现手机好好。 当内存泄露积累...
  • 强大windbg定位内存泄露,两句命令搞定! 转载于:https://www.cnblogs.com/tewuapple/p/8309235.html
  • Java内存泄露问题定位常用命令

    千次阅读 2017-12-26 08:39:45
    jstat -gcutil pid 10000 lsof -p pid ...ls -al /proc/pid/fd #直接打印出当前此process 所有打开文件 jmap -histo:live pid > info.log jmap -dump:live,file=mydumpfile pid jhat mydumpfile http://
  • 内存泄露监控

    2019-07-30 16:20:48
    最近的项目里遇到内存泄露问题,监控进程是否有内存泄露的问题,一般查看进程占用物理内存的情况。 watch cat /proc/$PID/status | grep VmRSS PID是具体的进程号,用 grep 命令过滤出我们需要的信息。 ...
  • monkey内存泄露

    2017-07-20 13:49:00
    手机没有提示但是实际有内存泄露:排除方法通过logcat文件GC输出lgo信息,搜关键词GC,如果有下面四个中一个,就可能存在内存泄露。(可以打开两个命令窗口,一个执行adb logcat,再执行monk...
  • 借鉴于:https://blog.csdn.net/stpeace/article/details/46642507linux小命令:mtrace(memory trace), 它可以用来协助定位内存泄露。 搞开发, 应该或多或少地听说过mtrace.下面, 我们来看看程序:#include int...
  • 内存泄露查看方法

    2021-01-09 19:55:39
    定义: 内存被占用,使用完成后没有释放 产生原因: ... 查看各个进程内存占用率,如果某个进程占用内存在一直上升,很有可能发生了内存泄露 其他命令free 查看整个系统内存使用情况 ...
  • 内存泄露

    千次阅读 2008-11-18 19:11:00
    什么是内存泄露内存泄露是一种实现错误。它将会慢慢耗尽系统内存空间。当计算机运行进程的时候,可能需要或多或少的内存。这主要以来于进程每时每刻将要执行的命令。当进程需要更多的内存时,将给操作系统提出请求。...
  • 诊断Java中的内存泄露

    2020-12-22 21:57:13
     首先,我用下面的命令监视进程:  while ( sleep 1 ) ; do ps -p $PID -o %cpu,%mem,rss ; done  (如果有的话还有New Relic)  如果你看到内存上升很快,可能是因为虚拟机设置。如果你没有明确指定JVM...
  • Android内存泄露

    2019-04-02 20:26:00
    一、app内存泄露调试 1、通过adb shell dumpsys meminfo packageName来查看内存使用状况在没有打开应用情况下,该命令返回数据是这样: 2、打开这个应用MainActivity,再通过命令查看: 可以看到打印...
  • 我们正在开发类数据库系统有一个内存模块,出现了一个疑似”内存泄露”问题,现象如下:内存模块内存释放以后没有归还操作系统,比如内存模块占用内存为10GB,释放内存以后,通过TOP命令或者/proc/pid/status...
  • 内存泄露问题排查

    2020-05-29 17:51:08
    b) 内存泄露:是由于系统bug导致创建对象无法正常回收,这种智能通过修改代码来处理这种问题 二、 排查案例 a) 查找进程ID 格式:jps [options] [hostId] jps -l ps -aux | grep xxx 三、 利用虚拟机统计信息...
  • 如果系统内存消耗越来越大,CPU越来越高,可能性最大的是系统存在内存泄露。 是由于内存泄露导致的可用内存减少,当达到某一临界点的时候,会频繁导致虚拟机垃圾回收...重启IIS和Sqlserver的命令 iis:net stop ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 504
精华内容 201
关键字:

内存泄露的命令