解決因為終端打印造成的java程序假死


問題狀態:

java 程序
日志采用 log4j
運行時由另一個管理進程拉起,程序在后台運行。

現象:

程序后台運行時,運行一段時間后假死

分析原因:

嘗試打印輸出,定位假死的具體位置,發現出現假死的位置不固定,甚至是基本的日志輸出都有問題
嘗試手動啟動,程序能正常運行,並且發現有大量的打印輸出到終端

結論:

程序在終端有打印信息輸出,在后台運行后,信息無法輸出到終端,
打印信息過多后,緩沖區寫滿,程序停止運行,造成假死現象

解決方法:

1 后台運行的程序不打印輸出信息到終端
由於程序采用log4j,所以屏蔽 log4j.xml 配置中的 Console 配置輸出
2 使用 nohup 將打印信息追加到 nohup.out 文件中,這種會隨着時間的累計生成很大的文件

 

 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM