各位我的程序数据量很小的时候大概几万条数据的时候没发生java.lang.OutOfMemoryError
当数据量大的时候就会抛java.lang.OutOfMemoryError异常
请高手帮我看看程序那地方写的不好
public Iterator seachTime(String start,String end)
{
Iterator iter = null;
List l = new ArrayList();
String sql=" select ";
sql+=" a.TELEPHONE ,to_char(a.STARTTIME,'YYYY-MM-DD HH24:MI:SS'),";
sql+=" to_char(a.ENDTIME,'YYYY-MM-DD HH24:MI:SS'),MENULOG,b.province";
sql+=" from T_IVR_WIN_USER a,AC_IVRJGW_PROVINCE b ";
sql+=" where ";
sql+=" a.STARTTIME >= to_date(?,'YYYY-MM-DD HH24:MI:SS')";
sql+=" and a.ENDTIME <= to_date(?,'YYYY-MM-DD HH24:MI:SS')";
sql+=" and substr(a.TELEPHONE,1,7)=trim(b.segment)";
sql+=" and( a.STARTTIME is not null or a.ENDTIME !=a.STARTTIME ) order by a.STARTTIME desc ";
Oracle ora = Oracle.getInstance(sql);
ora.setString(1,start);
ora.setString(2,end);
ResultSet rs = ora.executeQuery();
PerInfo pi = null;
try
{
while(rs.next())
{
if(pi == null)
pi = new PerInfo();
pi.addUser(rs.getString(1));
History h = new History();
String telphone=rs.getString(1).trim();
h.setPhone(telphone);
h.setStartTime(rs.getString(2));
h.setEndTime(rs.getString(3));
pi.addTotalTime((int)h.getTimeLong()/60);
if(h.getTimeLong()%60 > 0)
pi.addTotalTime(1);
//String region =getregion(telphone);
h.setRegion(rs.getString(5));
l.add(h);
}
}catch(SQLException e)
{
e.printStackTrace();
}finally
{
ora.close();
}
l.add(0,pi);
if(l.size() > 1)
iter = l.iterator();
return iter;
}
当数据量大的时候就会抛java.lang.OutOfMemoryError异常
请高手帮我看看程序那地方写的不好
public Iterator seachTime(String start,String end)
{
Iterator iter = null;
List l = new ArrayList();
String sql=" select ";
sql+=" a.TELEPHONE ,to_char(a.STARTTIME,'YYYY-MM-DD HH24:MI:SS'),";
sql+=" to_char(a.ENDTIME,'YYYY-MM-DD HH24:MI:SS'),MENULOG,b.province";
sql+=" from T_IVR_WIN_USER a,AC_IVRJGW_PROVINCE b ";
sql+=" where ";
sql+=" a.STARTTIME >= to_date(?,'YYYY-MM-DD HH24:MI:SS')";
sql+=" and a.ENDTIME <= to_date(?,'YYYY-MM-DD HH24:MI:SS')";
sql+=" and substr(a.TELEPHONE,1,7)=trim(b.segment)";
sql+=" and( a.STARTTIME is not null or a.ENDTIME !=a.STARTTIME ) order by a.STARTTIME desc ";
Oracle ora = Oracle.getInstance(sql);
ora.setString(1,start);
ora.setString(2,end);
ResultSet rs = ora.executeQuery();
PerInfo pi = null;
try
{
while(rs.next())
{
if(pi == null)
pi = new PerInfo();
pi.addUser(rs.getString(1));
History h = new History();
String telphone=rs.getString(1).trim();
h.setPhone(telphone);
h.setStartTime(rs.getString(2));
h.setEndTime(rs.getString(3));
pi.addTotalTime((int)h.getTimeLong()/60);
if(h.getTimeLong()%60 > 0)
pi.addTotalTime(1);
//String region =getregion(telphone);
h.setRegion(rs.getString(5));
l.add(h);
}
}catch(SQLException e)
{
e.printStackTrace();
}finally
{
ora.close();
}
l.add(0,pi);
if(l.size() > 1)
iter = l.iterator();
return iter;
}
解决方案 »
- java中设置字体的问题
- 初级!静态方法(变量)的内存分配问题
- 关于正则表达式在各语种的兼容问题
- 是不是传ASCII文件和传byte文件有所不同?
- 紧急求助,打印机纸张方向问题
- 请教java中如何实现一个数字集合的排列?
- <a href="#" onclick="alert('对文字的响应!');">我的响应</a>之中“#”代表什么意思?
- 有谁用过xmlBlaster,救命啊,有关生存
- 用什么样的工具(除installshield外)能方便给解压缩的jdk和Tomcat打包,而且能往环境变量写JAVA_HOME
- jdbc初级问题,快来抢分了
- 请求指引方向:
- 求助啊,java工程为什么会出现java.lang.OutOfMemoryError异常?
采用了定量提取:start end
并在程序最后关闭了连接ora
java -Xmx1024m xxx.xxx.xxx
java -Xmx1024m xxx.xxx.xxx
如果你的内在没有1G,这个参数也没用的大数据量尽量使用子查询
连接查询是非常浪费资源的