亲爱的, 我使用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