2013-10-30 75 views
0

我在我的代碼中得到一個java.lang.OutOfMemoryError: Java堆空間異常。我試着打印報表,看看我是否陷入了無限循環。我知道我的最後一個循環處於無限循環,因爲當我將變量"i"設置爲count時,我有多少次迭代停止程序,當它到達250000時。爲什麼我陷入這個無限循環,我該如何解決它?不知道如何以及在哪裏我卡在這個無限循環

+0

究竟你在哪裏檢查'I'250000' – Prateek

+0

我剛宣佈我的外循環,把我在過去的for循環中,我一直在遠遠超出增加250000但我手動停止了該程序,一旦它到達了編號爲 – user2811419

+1

的區域,他每次打印「i」時都會經歷一切。他說當'我'達到25萬時他殺了這個程序。但是'i'的打印和增量發生在4個嵌套循環中......如果每個循環只發生23次,那麼你會達到250,000次真正的快速(23 * 23 * 23 * 23 = 279841)。你怎麼知道**那是錯的? – dcsohl

回答

1

我想你實際上是進入一個無限循環,因爲該行

temporaryOrderSampleSet.add(orderSample); 

您不斷添加orderSample對象來這套,然後立即檢查同一組的所有成員。因此,您從1開始,檢查1,然後添加第二個,然後檢查1和2,然後添加3,然後檢查1,2和3等...

+0

會在某些時候清除集合解決問題嗎? – user2811419

+0

是的,如果你需要的話。這是你想要的功能嗎?檢查最內層循環中的每一個對象? – wxkevin

+0

是的我試圖把每個屬性放在樣本中,然後是樣本中現在包含屬性的順序,所以我想要第一個屬性進入第一個樣本,進入第一個順序,然後是第二個屬性進入第二個樣品進入第二個訂單等 – user2811419

0

您從不清除temporaryOrderSampleSet 。這是正確的?它將快速增長。 (此外,它聽起來並不很臨時