取上百万记录扔到LIST里面,内存就溢出,有没有什么好的解决方法啊
javax.servlet.ServletException
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:515)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:422)
org.apache.struts2.dispatcher.ActionContextCleanUp.doFilter(ActionContextCleanUp.java:99)
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
root cause java.lang.reflect.InvocationTargetException
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source)
com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:404)
com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:267)

解决方案 »

  1.   

    比如:List list = "从数据库取1000W的记录";
    就出内存溢出了
      

  2.   

    分批处理 我也遇到个问题呢 tomcat 加载了java web系统
    tomcat运行越来越慢 后来就是内存不足了 跟这个差不多的问题 
    java真的是麻烦的东东
      

  3.   

    "取上百万记录扔到LIST里面,内存就溢出":那就不要一下子取上百万记录扔到LIST里面。
      

  4.   

    使用分页 SQL 每次取 5001 条,如果取出的结果大于 5000,那说明还存在下一页,移除最后一条。处理完后接着取下一页,直到取到的数据少于等于 5000 条就不用再取下一页了。