java性能优化 –gc日志收集与分析
使用jvisualvm与jconsole能够实时监控java程序的运行状态。 但是我们并不会一直盯着输入屏幕,或者说开着一个客户端一直抓取服务器的运行信息。相对来说,能够让java程序在运行的时候自动生成日志,然后我们再对生成的数据进行分析是比较不错的选择。 收集日志 打印Gc日志的参数 打印gc详细信息 -XX:+PringGCDetails 带有距离JVM开始运行的时间戳 -XX:+PrintGCTimeStamps 带有日历时间戳 --XX:+PringGCDateStamps 指定gc日志存放文件(不指定则控制台打印) -Xloggc: 针对高延迟问题调优HotSpot VM时,下面两个命令行选项特别有用,通过它们可以获得应用程序由于执行VM安全操作而阻塞的时间以及两个安全点操作之间应用程序运行的时间。 -XX:+PrintGCApplicationStoppedTime-XX:+PrintGCApplicationConcurrentTime 何谓安全操作:安全操作使JVM进入到一种状态:所有的java应用线程都被阻塞、执行本地代码的线程都被禁止返回VM执行 Java 代码。安全操作常用于虚拟机需要进行内部操作时,此时所有的 Java 线程都被显式地置于阻塞状态且不能修改 Java 堆的情况。 设置参数 Tomcat $CATALINA_HOME/bin/setenv