親愛的, 我使用Java RMI的我的程序,從客戶端我打電話通過傳遞一個參數我的接口方法。使用該參數接口運行查詢並返回40,000行(每行包含10行)。所有這些都存儲在向量結構[[0,1,2,3,4,5,6,7,8 ,9],[],[],[],[],[] ...]。當我點擊一個按鈕時會發生這種情況。第一次它的作品,但我也試圖做同樣的事情(即單擊按鈕)它顯示客戶端的內存異常java.lang.out。請幫助我。我正在使用Postgresql數據庫。內存溢出異常的RMI
Client side:
Vector data = new Vector();
data = Inter.getEndProductDetailsForCopyChain(endProductId);
Server side:
public Vector getEndProductDetailsForCopyChain(int endProductId1)
{
Connection OPConnect = StreamLineConnection.GetStreamline_Connection();
Vector data=new Vector();
try{
System.out.println("Before query data vector size>>>>>>>>"+data.size());//mohan
String sqlQry = "select distinct style_no,version_no,matNo,type,specs,color,size,ref_no,uom1 from garment where id=" +endProductId1;
System.out.println("sqlQry"+ sqlQry);
Statement st=OPConnect.createStatement();
ResultSet rs = st.executeQuery(sqlQry);
while(rs.next()){
Vector row = new Vector();
row.add(rs.getString("style_no"));
row.add(rs.getString("version_no"));
row.add(rs.getString("matNo"));
row.add(rs.getString("type"));
row.add(rs.getString("specs"));
row.add(rs.getString("color"));
row.add(rs.getString("size"));
row.add(rs.getString("ref_no"));
row.add(rs.getString("uom1"));
row.add(new Boolean(false));
data.add(row);
}
System.out.println("After query data vector size>>>>>>>>"+data.size());
}catch(Exception e)
{ e.printStackTrace();
closeConnection(OPConnect);
}
return data;
}
我清除了所有的向量和整理我的過程,但仍然在客戶端拋出內存異常終止後的HashMap時的數據(查詢結果向量)分發到客戶端發生這種情況。
你爲什麼要在內存中加載如此龐大的數據? – 2010-11-14 11:11:31
根據需要它是必要的。我只給了一個示例查詢。真的那是一個巨大的查詢。 – Mohan 2010-11-14 11:19:51
我認爲你是在服務器上使用PostgreSQL的事實是不相干......」剛說,消除因素爲您服務。 – 2010-11-14 11:25:06