我已經在我們的Java程序中的一個臨到一個奇怪的問題之間執行。偶爾偶爾會有一些線程延遲執行25秒。這發生了1-2分鐘,然後應用程序恢復正常處理。這是一個嚴格的時間要求的電話應用程序,所以這是不可接受的。Java的延遲非阻塞語句
調用類
OCSIHandling ocsiHandler = new OCSIHandling(this.arg0);
ocsiHandler.run();
構造
public OCSIHandling()
{
//This is the last statement of the constructor after initializations
logger.info("[" + refId + "][OCSI] SMS IDP");
}
類方法
run(){
//This is the first statement of the method which is executed with delay
logger.info("[" + refId + "][OCSI] in run()");
}
樣的問題時日誌
INFO 2014-02-07 06:03:27674 [線程143840672] 100 - [MGW070214060327d384] [OCSI] SMS IDP INFO 2014-02-07 06:03:49771 [線程143840672] 123 - [MGW070214060327d384] [ OCSI]在運行()
有執行中的延遲,49-27 =22秒
程序是與一個32位的HotSpot服務器VM -server選項運行。在此期間,日誌記錄也按時間順序排列。 1:00:01時間戳1:00:00之前寫的等。沒有線程池。
我們正在使用的CentOS 5.4,VMware的客戶端上64位。應用程序是CPU密集型而沒有太多的內存需求(其擁有1GB的默認堆大小運行),所以我不知道,如果GC能引起這麼多的延遲。
的logback文件:http://pastebin.com/fpxYBYew
請點我什麼可能的因素可能會導致這種行爲。
編輯:這發生在非高峯
嘗試使用一個分析器。商業(YourKit,JProfiler的...)或VisualVM的(免費) – Jayan
這是可以探查器附加到應用程序JVM。 –
是這個ur自定義類還是java.lang.Class? – Arvind