Java中慎用e.printStackTrace()

Java使用框架集成的log4j、logback等統一打印日誌,儘量不使用catch的e.printStackTrace()

1、佔用太多內存,造成鎖死

e.printStackTrace()要打印字符串輸出到控制檯上,需要字符串常量池所在的內存塊有足夠的空間。由於e.printStackTrace() 語句要產生的字符串記錄的是堆棧信息,太長太多,內存被填滿了!大量線程產出字符串等待有內存被釋放,會造成相互等待內存(字符串池所屬的那麼點非堆內存空間),導致整個應用掛掉了。

2、日誌交錯混合,不易讀

從開始學習java,老師就教我們寫代碼要具有可讀性,易讀性。同樣,日誌的輸出如果不具有易讀性,也是讓程序員非常頭疼的一件事。那麼爲什麼e.printStackTrace輸出的日誌具有不易讀性了呢?

printStackTrace()默認使用了System.err輸出流進行輸出,與System.out是兩個不同的輸出流,那麼在打印時自然就形成了交叉。再就是輸出流是有緩衝區的,所以對於什麼時候具體輸出也形成了隨機。

參考:
https://baijiahao.baidu.com/s?id=1639733404613101605&wfr=spider&for=pc
https://blog.csdn.net/qq_28929589/article/details/82495193

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章