在生產環境上看到tomcat/log/gate.log一直輸出異常信息,可是不見異常堆棧信息。java
Java.lang.NullPointerExceptiontomcat
java.lang.NullPointerExceptionjvm
java.lang.NullPointerException優化
java.lang.NullPointerExceptiongoogle
最開始懷疑是log4j的使用方式有問題,致使打印不出來,可是當前的使用方式只會丟失rootCause,不會丟棄全部的異常堆棧。catalina.out中就覺得是使用了標準輸出打印異常類名...。事實固然不是這樣,後來查看了異常處理點,基本上都會調用printStackTrace(),而後調用log4j來輸出異常到其餘文件。說明異常的堆棧信息確實丟失了。.net
異常堆棧丟失了,而後google之,stackoverflow答案。從別人的回答中,能夠看到,這裏多是jvm優化時,產生的結果。get
當增長虛擬機參數-XX:-OmitStackTraceInFastThrow後,不見異常堆棧信息丟失。虛擬機