成为javagc专家partii—如何监控java垃圾回收机制-java开发java经验技巧

成为javagc专家partii—如何监控java垃圾回收机制-java开发java经验技巧

ID:30812397

大小:203.77 KB

页数:13页

时间:2019-01-03

成为javagc专家partii—如何监控java垃圾回收机制-java开发java经验技巧_第1页
成为javagc专家partii—如何监控java垃圾回收机制-java开发java经验技巧_第2页
成为javagc专家partii—如何监控java垃圾回收机制-java开发java经验技巧_第3页
成为javagc专家partii—如何监控java垃圾回收机制-java开发java经验技巧_第4页
成为javagc专家partii—如何监控java垃圾回收机制-java开发java经验技巧_第5页
资源描述:

《成为javagc专家partii—如何监控java垃圾回收机制-java开发java经验技巧》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、成为JavaGC专家PartII—如何监控Java垃圾回收机制-Java开发Java经验技巧成为JavaGC专家(2)—如何监控Java垃圾回收机制本文作者:ImportNcw-王晓杰未经许可,禁止转载!本文是成为JavaGC专家系列文章的第二篇。在第一篇《深入浅出Java垃圾回收机制》中我们学习了不同GC算法的执行过程,GC是如何工作的,什么是新生代和老年代,你应该了解的JDK7中的5种GC类型,以及这5种类型对于应用性能的影响。在本文小,我将解释JVM到底是如何执行垃圾回收处理的。什么是GC监控?垃圾回收收

2、集监控指的是搞清楚JVM如何执行GC的过程,例如,我们可以查明:1.???????何时一个新生代中的对象被移动到老年代时,所花费的时间。2.?????Stop-the-world何时发生的,持续了多长时间。GC监控是为了鉴别JVM是否在高效地执行GC,以及是否有必要进行额外的性能调优。基于以上信息,我们可以修改应用程序或者调整GC算法(GC优化)。如何监控GC有很多种方法可以监控GC,但其差别仅仅是GC操作通过何种方式展现而已。GC操作是由JVM來完成,而GC监控工具只是将JVM提供的GC信息展现给你,因此,不

3、论你使用何种方式监控GC都将得到相同的结果。所以你也就不必去学习所有的监控GC的方法。但是因为学习每种监控方法不会占用太多时间,了解多一点可以帮助你根据不同的场景选择最为合适的方式。下面所列的工具以及JVM参数并不适用于所有的HVM供应商。这是因为并没有关于GC信息的强制标准。本文我们将使用HotSpotJVM(OracleJVM)。因为NHN一直在使用Oracle(Sun)JVM,所以用它作为示例來解释我们提到的工具和JVM参数更容易些。首先,GC监控方法根据访问的接口不同,可以分成CUI和GUI两大类。CU

4、IGC监控方法使用一个独立的叫做”jstat”的CUI应用,或者在启动JVM的时■候选择JVM参数”verbosegc”。GUIGC监控由一个单独的图形化应用來完成,其中三个最常用的应用是”jconsole”,“jvisualvm”和“VisualGC”。下面我们来详细学习每种方法。jstatjstat是HotSpotJVM提供的一个监控工具。其他监控工具还有jps和jstatdo有些时候,你可能需耍同时使用三种工具来监控你的应用。jstat不仅提供GC操作的信息,还提供类装载操作的信息以及运行时编译器操作的信

5、息。本文将只涉及jstat能够提供的信息小与监控GC操作信息相关的功能。jstat被放置在$JDK_H0ME/bino因此只要java和javac能执行,jstat同样可以执行。你可以在命令行环境下执行如下语句。S0CS1CSOUSIU0UPCPUGCT3008.03072.00.01511.1283690.275392.041064.319.5883008.03072.00.01511.1283690.275392.041064.319.5883008.03072.00.01511.1283690.27539

6、2.041064.319.588$>jstat-go$1000ECYGCYGCTEUFGCOCFGCT343360.046383.0699072.025401&45441.133343360.047530.9699072.025401&45441.133343360.047793.0699072.025401&45441.133$>在上图的例子小,实际的数据会按照如下列输出:SOCSICSOUSIUECEU0COUPCvmid(虚拟机ID),正如其名字描述的,它是虚拟机的ID,Java应用不论运行

7、在木地还是远程的机器都会拥有自己独立的vmido运行在本地机器上的vmid称之为Ivmid(本地vmid),通常是PTDo如果想得到PID的值你可以使用ps命令或者windows任务管理器,但我们推荐使用jps来获取,因为PID和Ivmid有时会不一致。jps通过JavaPS实现,jps命令会返回vmids和main方法的信息,正如ps命令展现PIDS和进程名字那样。首先通过jps命令找到你要监控的Java应用的vmid,并把它作为jstat的参数。当几个WAS实例运行在同一台设备上时,如果你只使用jps命令,

8、将只能看到启动(bootstrap)信息。我们建议在这种情况下使用ps-ef

9、grepjava与jps配合使用。想要得到GC性能相关的数据需要持续不断地监控,因此在执行jstat时,要规则地输出GC监控的信息。例如,执行"jstat-gc1000(或Is)会每隔一秒展示GC监控数据。”jstat-gc100010"会每隔1秒展现一次,口一共10次。参数名称gc描述输岀每个堆区域的当前可

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。