欢迎访问昆山宝鼎软件有限公司网站! 设为首页 | 网站地图 | XML | RSS订阅 | 宝鼎邮箱 | 后台管理


新闻资讯

MENU

软件开发知识

查看GC的增 劳务派遣管理系统 长情况

点击: 次  来源:宝鼎软件 时间:2017-08-22

原文出处: hollischuang

作为一个及格的开拓人员,不只要能写得一手还代码,尚有一项很重要的技术就是排盘查题。这里提到的排盘查题不只仅是在coding的进程中debug等,还包罗的就是线上问题的排查。由于在出产情况中,软件开发,一般没步伐debug(其实有些问题,debug也白扯。。。),所以我们需要借助一些常用呼吁来查察运行时的详细环境,这些运行时信息包罗但不限于运行日志、异常仓库、堆利用环境、GC环境、JVM参数环境、线程环境等。

给一个系统定位问题的时候,常识、履历是要害,数据是依据,软件开发,东西是运用常识处理惩罚数据的手段。为了便于我们排查息争决问题,Sun公司为我们提供了一些常用呼吁。这些呼吁一般都是jdk/lib/tools.jar中类库的一层薄包装。跟着JVM的安装一起被安装到呆板中,在bin目次中。下面就来认识一下这些呼吁以及详细利用方法。文中涉及到的所有呼吁的具体信息可以参考 Java呼吁进修系列文章。

jps

成果

显示当前所有java历程pid的呼吁。

常用指令

  • jps:显示当前用户的所有java历程的PID
  • jps -v 3331:显示虚拟机参数
  • jps -m 3331:显示通报给main()函数的参数
  • jps -l 3331:显示主类的全路径
  • 具体先容

    jinfo

    成果

    及时查察和调解虚拟机参数,可以显示未被显示指定的参数的默认值(jps -v 则不能)。

    jdk8中已经不支持该呼吁。

    常用指令

    jinfo -flag CMSIniniatingOccupancyFration 1444:查询CMSIniniatingOccupancyFration参数值

    具体先容

    jstat

    成果

    显示历程中的类装载、内存、垃圾收集、JIT编译等运行数据。

    常用指令

  • jstat -gc 3331 250 20 :查询历程2764的垃圾收集环境,每250毫秒查询一次,一共查询20次。
  • jstat -gccause:特别输出上次GC原因
  • jstat -calss:件事类装载、类卸载、总空间以及所耗损的时间
  • 具体先容

    jmap

    成果

    生成堆转储快照(heapdump)

    常用指令

  • jmap -heap 3331:查察java 堆(heap)利用环境
  • jmap -histo 3331:查察堆内存(histogram)中的工具数量及巨细
  • jmap -histo:live 3331:JVM会先触发gc,然后再统计信息
  • jmap -dump:format=b,file=heapDump 3331:将内存利用的具体环境输出到文件,之后一般利用其他东西举办阐明。
  • 具体先容

    jhat

    成果

    一般与jmap搭配利用,用来阐明jmap生成的堆转储文件。

    由于有许多可视化东西(Eclipse Memory Analyzer 、IBM HeapAnalyzer)可以替代,所以很罕用。不外在没有可视化东西的呆板上也是可用的。

    常用指令

    jmap -dump:format=b,file=heapDump 3331 + jhat heapDump:理会Java堆转储文件,并启动一个 web server

    具体先容

    jstack

    成果

    生成当前时刻的线程快照。

    常用指令

  • jstack 3331:查察线程环境
  • jstack -F 3331:正常输出不被响应时,软件开发,利用该指令
  • jstack -l 3331:除仓库外,显示关于锁的附件信息
  • 具体先容

    常见问题定位进程

    频繁GC问题或内存溢出问题

    一、利用jps查察线程ID

    二、利用jstat -gc 3331 250 20 查察gc环境,一般较量存眷PERM区的环境,查察GC的增长环境。

    三、利用jstat -gccause:特别输出上次GC原因

    四、利用jmap -dump:format=b,file=heapDump 3331生成堆转储文件

    五、利用jhat可能可视化东西(Eclipse Memory Analyzer 、IBM HeapAnalyzer)阐明堆环境。

    六、团结代码办理内存溢出或泄露问题。

    死锁问题

    一、利用jps查察线程ID

    二、利用jstack 3331:查察线程环境

    结语

    常常利用适当的虚拟机监控和阐明东西可以加速我们阐明数据、定位办理问题的速度,但也要知道,东西永远都是常识技术的一层包装,没有什么东西是包治百病的。