zoukankan      html  css  js  c++  java
  • java内存泄漏

    一、图形化工具:jconsole

    JDK自带,在windows平台下,执行cmd进入控制台,然后执行jconsole即可。

    这个工具能够直观的观察内存的增长和回收情况,CPU的使用情况等等。

    jconsole远程链接的一个实例,例如我想观察远端服务器上tomcat的运行情况。

    1 vim catalina.sh
    2 
    3 CATALINA_OPTS="$CATALINA_OPTS -Djava.rmi.server.hostname=192.168.8.100 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxrem  
    4 ote.port=12345 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false" 

    然后就可以在远程访问栏输入192.168.8.100:12345查看运行情况了。

    上面配置的两个false是不用输入用户名和密码的。

    作为产品发布时别忘记把这个注释掉!

    二、jstat

    jstat -gcutil 6728 2500 10

    观察内存的回收情况,每隔2.5秒打印一次结果,一共打印10次,能看到类似下面的这个结果:

    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 — 从应用程序启动到采样时用于垃圾回收的总时间(单位秒)

    如果有大量的FGC就要查询是否有内存泄漏的问题了!

    三、如果想查看具体每一个类的内存分配情况怎么办呢?

    一个强大的命令出场了:

    jmap

    查看每一个类的内存分配和占用情况:

    jmap -heap 6728|jmap -histo:live 6728

  • 相关阅读:
    Model、ModelMap和ModelAndView的使用详解
    maven的pom.xml配置json依赖
    int和Integer的区别
    SSM 视频
    2018-1-25 PHP数组
    2018-1-25 PHP函数方法
    2018-1-22 PHP 变量和常量
    2018-1-21 复习
    2018-1-18 如何用html和css实现div的缓慢移动效果
    2018-1-17 js弹出div登录窗口
  • 原文地址:https://www.cnblogs.com/yoyotl/p/5429978.html
Copyright © 2011-2022 走看看