打印GC详细记录,-XX:+PrintGC 这个口令是简单GC日志,为了更容易定位问题,我们开启Details模式,-Xloggc是把gc日志输出到指定文件。
-XX:+PrintGCTimeStamps显示的时间代表JVM启动至记录日志的时间。
-XX:+PrintGCDateStamps则会添加上每行信息的绝对日期。
其实开启了-Xloggc的话会隐式的开启-XX:+PrintGCTimeStamps,不过为了防止各版本JVM改动差异,还是显示的设置出来保险。
-XX:-OmitStackTraceInFastThrow
这是个比较容易被忽略的参数,而没有经验的话又往往很难定位到原因。
JDK5之后JVM对异常做了一个优化,对于一些频繁抛出的异常,JIT重新编译后会抛出没有堆栈信息的异常,-server模式下是默认开启的,因此在频繁抛出某个异常一段时间后,该优化开始起作用,即只抛出没有堆栈的异常信息。
但由于该优化是JIT编译后才启用的,所以开始该异常的抛出是有完整堆栈信息的,但运行一段时间可能发现没有任何堆栈信息,很难定位,初次遇到很容易摸不到头脑。
可以使用-XX:-OmitStackTraceInFastThrow来关闭该项优化。