可以通过配置JVM的启动参数, 打印类的加载情况及对象的回收信息, 可以打印到屏幕或指定文件中, 默认也会打印到catalina.log中. Tomcat容器的JVM启动参数配置文件是: ${TOMCAT_HOME}/bin/catalina.sh, 具体参数如下:
-verbose:gc # 在输出设备显示垃圾收集信息(JVM发生内存回收时输出相关信息) -XX:+PrintGC # 输出GC日志, 形式: Full GC 118250K->113543K(130112K), 0.0094143 secs -XX:+PrintGCDetails # 输出GC详细日志, 形式: GC [DefNew: 8614K->781K(9088K), 0.0123035 secs] 118250K->113543K(130112K), 0.0124633 secs[Tenured: 112761K->10414K(121024K), 0.0433488 secs] 121376K->10414K(130112K), 0.0436268 secs] -XX:+PrintGCTimeStamps # 输出GC的时间戳, 以基准时间的形式输出: 11.851: [GC 98328K->93620K(130112K), 0.0082960 secs], 11.851是JVM启动后的秒数. -XX:+PrintGCDateStamps # 输出GC的时间戳, 以日期的形式输出: 2018-08-28T21:53:59.234+0800. -XX:+PrintGCApplicationStoppedTime # 打印垃圾回收期间程序暂停的时间, 即GC消耗的时间. 可与上面混合使用. 输出形式: Total time for which application threads were stopped: 0.0468229 seconds -XX:+PrintGCApplicationConcurrentTime # 打印每次垃圾回收前, 程序未中断的执行时间, 即相邻2次GC的间隔. 可与上面混合使用. 输出形式: Application time: 0.5291524 seconds -XX:+PrintTenuringDistribution # 观察各个Age的对象总大小 -XX:PrintHeapAtGC # 打印GC前后的详细堆栈信息. -XX:+HeapDumpOnOutOfMemoryError # 发生OOM时自动dump堆栈信息, 以便后续分析. -Xloggc:../logs/gc.log # 与上面选项配合使用, 将日志信息输出到指定的文件以便后续分析. 4 添加 JMS 远程监控对部署在局域网内其他服务器上的Tomcat, 可以打开JMX监控端口, 就可以在另外的服务器上通过该端口查看常用的参数(一些比较复杂的功能不支持).
配置方法: 同样是在JVM启动参数中配置, 配置如下:
-Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=172.16.11.62 # 设置JVM的JMS监听的IP地址, 防止错误监听为本机127.0.0.1地址 -Dcom.sun.management.jmxremote.port=1090 # 设置JVM的JMS监控的端口 -Dcom.sun.management.jmxremote.ssl=false # 设置JVM的JMS监控不实用SSL -Dcom.sun.management.jmxremote.authenticate=false # 设置JVM的JMS监控不需要认证参考资料:
JVM 运行时内存使用情况监控
作者: ma_shoufeng(马瘦风)
出处: 博客园 马瘦风的博客
您的支持是对博主的极大鼓励, 感谢您的阅读.
本文版权归博主所有, 欢迎转载, 但未经博主同意必须保留此段声明, 且在文章页面明显位置给出原文链接, 否则博主保留追究法律责任的权利.