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

  • 相关阅读:
    mysql 覆盖索引
    mysql 连接查询 和 子查询
    mysql varchar
    uchome 是如何将数据插入数据库的
    Tomcat5 在windows安装服务
    Linux中错误码及描述查看
    Longines浪琴手表型号解释
    perl 安装 Net::Telnet 模块
    php一些错误的显示问题
    firefox样式表cursor和兼容Ie firefox,解决文字溢出的问题(wordwrap:breakword;wordbreak:breakall)
  • 原文地址:https://www.cnblogs.com/yoyotl/p/5429978.html
Copyright © 2011-2022 走看看