Re: [蟲?] While(ture)迴圈中斷
昨天的程式跑到今天早上又結束了
後來發現是 Thread 會有
java.lang.OutOfMemoryError: Java heap space
我想請問一段程式碼
關於連結 DB
public void insertTable(ArrayList<News> news) // News 是要存入資料庫的 Object
{
String insertSQL = "insert into XX values (XX) ";
Connection con = null;
PreparedStatement pst = null;
try
{
con = getConnection();
pst = con.prepareStatement(insertSQL);
News temp;
for(int i = 0; i < news.size() ; i++)
{
temp = news.get(i);
pst.set....
pst.addBatch();
}
pst.executeBatch();
}
catch(SQLException e)
{
e.printStackTrace();
}
finally
{
try
{
pst.close();
con.close();
}
catch(SQLException e)
{
System.out.println("Close Exception :" + e.getMessage());
}
}
}
大概有20個 Thread 會同時跑這個方法
所以我把 Connection 跟 PrepareStatement 寫在 fuction裡
Connection 取得的方法 getConnection
是我用 proxool 做了一個 Connection Pool
若是 connection 被取完了 就等待x秒
請問我這樣的寫法
會造成有些東西不能 gc 嗎
或是我少關了什麼
還是我需要 clearBatch();
才能 close PrepareStatement?
※ 引述《icecastleo (酷捏)》之銘言:
: 我有一個While迴圈
: 每隔一段時間會開啟 Thread
: 接著 Sleep
: 但程式有時候會自動結束
: 大概一天
: 主程式並沒有 Throw 任何 Exception
: 請問我要怎麼知道
: Java程式自動關閉的原因?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.167.7.129
推
10/29 13:42, , 1F
10/29 13:42, 1F
推
10/29 13:43, , 2F
10/29 13:43, 2F
→
10/29 13:43, , 3F
10/29 13:43, 3F
推
10/29 13:43, , 4F
10/29 13:43, 4F
→
10/29 13:50, , 5F
10/29 13:50, 5F
抱歉改掉分隔線了
我的 News 只有幾個 private 欄位 跟Get 的 Method
我想我在去找找其他地方好了
所以 Out of Memory 太多次
JVM就會強制關閉我的程式嗎?
我可能沒搞懂 我以為Thread造成的 Exception 有處理的話
主程式還是不會自動結束 所以我說主程式沒有錯誤訊息 > <
※ 編輯: icecastleo 來自: 218.167.7.129 (10/29 14:04)
→
10/29 14:37, , 6F
10/29 14:37, 6F
→
10/29 14:53, , 7F
10/29 14:53, 7F
→
10/29 15:05, , 8F
10/29 15:05, 8F
→
10/29 20:47, , 9F
10/29 20:47, 9F
→
10/29 20:50, , 10F
10/29 20:50, 10F
→
10/29 20:52, , 11F
10/29 20:52, 11F
→
10/29 20:54, , 12F
10/29 20:54, 12F
→
10/30 11:39, , 13F
10/30 11:39, 13F
→
10/30 11:41, , 14F
10/30 11:41, 14F
→
10/30 13:18, , 15F
10/30 13:18, 15F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):