- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
借助开源工具高效析分Java应用的运行
借助开源工具 高效分?析Java应用的运行? 不止一次,我们?都萌发过想对运行中程?序的底层状况一探究竟?的念头。产生这种需求?的原因可能是运行缓慢?的服务、Java虚拟?机(JVM)崩溃、挂?起、死锁、频繁的JV?M暂停、突然或持续的?高CPU使用率、甚至?于可怕的内存溢出(O?OME)。好消息是现?在已有许多工具能帮你?得到Java虚拟机运?行过程中的不同参数,?这些信息有助于你了解?其内部状况,从而诊断?上述的各种情况。 ? 在这篇文章中,我将?介绍一些优秀的开源工?具。其中一些是JVM?自带的,另一些则是第?三方工具。我将从最简?单的工具开始介绍,逐?渐过渡到一些比较复杂?的工具。本文的目的是?帮助你找到合适的调试?诊断工具,这样当程序?出现执行异常、缓慢或?根本不能执行时,手头?随时有可用的工具。? 好了,让我们出发?。 如果程序出现?不正常的高内存负载、?频繁无响应或内存溢出?,通常最好的分析切入?点是查看内存对象。幸?好JVM内置了工具“?jmap”,让它天生?就能完成这种任务。? Jmap(借助J?PM的一点帮助) ? Oracle将jm?ap描述为一种“输出?进程、核心文件、远程?调试服务器的共享对象?内存映射和堆内存细节?”的程序。本文将使用?jmap打印一张内存?统计图。 为了运?行jmap,你需要知?道被调试程序的PID?(进程标识符)。得到?PID的简单办法是使?用JVM提供的jps?,它能列出机器上每一?个JVM进程及其PI?D。jps输出结果如?下图: ▲j?ps命令的终端输出? 为了打印内存统计?图,我们需要打开jm?ap控制台程序,并输?入程序的PID和“-?histo:live?”选项。如果不添加这?个选项,jmap将完?整导出该程序的堆内存?,这不是我们想要的结?果。所以,如果想得到?上图中“eureka?.Proxy”程序的?内存统计图,我们应该?用如下命令来运行jm?ap:以下是代码片?段: jmap ?–histo:liv?e 45417 ? 上述命令输出如下:? ▲命令jm?ap -histo:?live的输出结果显?示了堆中现有对象的个?数 结果中每行显?示了当前堆中每种类类?型的信息,包含被分配?的实例个数及其消耗的?字节数。 本例中?,我请同事有意给程序?增加了一处明显的内存?泄露。请特别注意位于?第8行的类,Cell?eData。将它与下?图显示的4分钟后截屏?进行比较: ?▲jmap的输出表明?CelleData类?的对象数目增加了 ? 请注意CelleD?ata类现在已经变为?系统中第二多的类,短?短4分钟内已经增加了?631,701个额外?实例。等待约一小时后?,我们观察到如下结果?: ▲程序执?行1小时后jmap的?输出结果,显示超过2?千5百万个Celle?Data类实例 ?现在有超过2千5百万?个CelleData?类实例,占用了超过1?GB内存!我们可以确?认这是一个内存泄露。? 这类数据信息的?好处是,不仅非常有用?而且对于很大的JVM?堆也能快速反馈结果。?我曾经试过检测一个运?行频繁并且占用17G?B堆内存的程序,使用?jmap能够在1分钟?内生成程序的性能统计?图。 需要注意的?是,jmap不是运行?分析工具,在生成统计?图时JVM可能会暂停?,因此当生成统计图时?需要确认这种暂停对程?序是可接受的。以我的?经验,通常在调试一个?严重bug时需要生成?这种统计图,这种情况?下,这些1分钟的暂停?对程序来说是可接受的?。这里,我们引出了下?一个话题 - 半自动?的运行分析工具Vis?ualVM。 V?isualVM ?另一个包含于JVM中?的工具是Visual?VM,它的开发者将它?描述为“一种集成了多?个JDK命令行工具的?可视化工具,它能为您?提供轻量级的运行分析?能力”。这样看来,V?isualVM是另一?种你最有可能用到的事?后分析工具,一般是错?误已出现或性能问题已?经用传统方法(客户抱?怨大多属于此类)发现?。 继续之前的示?例程序和它严重的内存?泄露问题,在程序执行?30分钟后,Visu?alVM帮我们绘制了?如下图表: ?▲图5:程序初始运行?的VisualVM ?内存图 从这个图?表,我们可以清晰地看?到截止到7:00pm?,运行仅仅10分钟后?,程序已经消耗掉超过?1GB的堆空间。又过?了23分钟,JVM已?经到了它启动参数–X?mx3g最大值,导致?程序响应缓慢,系统响?应缓慢(持续的垃圾回?收)和数量惊人的内存?溢出错误。 借助?jmap,我们定位了?这种内存消耗攀升的原?因。修复后,我们让程?序重新运行于Visu?alVM的严格监测之?下,观察到下面的情况?: ▲图6:?修复内存泄露问题后的?VisualVM内存?图 如你所见,
您可能关注的文档
最近下载
- 现代项目管理(第二版)戴大双 5.项目组织与人力资源管理.ppt VIP
- 石膏娃娃课件.pptx VIP
- 常微分方程(第四版)课件 王高雄 高等教育出版社 第三章 一阶微分方程的解的存在定理.pptx VIP
- 现代项目管理(第二版)戴大双 4.计划与控制.ppt VIP
- 现代项目管理(第二版)戴大双 3.项目融资.ppt VIP
- 现代项目管理(第二版)戴大双 2.项目论证与评估.ppt VIP
- 《富致秘录》中源线建仓法(陈雅山 著 王明森 点校).pdf VIP
- 《同济大学-智能制造导论》第1章 智能制造概述_2.pptx VIP
- Scl90问卷.doc VIP
- 第一至四批上海市非物质文化遗产名录.doc VIP
文档评论(0)