严重: Servlet.service() for servlet jsp threw exception
java.lang.OutOfMemoryError: Java heap space
at org.apache.xerces.impl.dtd.DTDGrammar.ensureAttributeDeclCapacity(Unknown Source)
at org.apache.xerces.impl.dtd.DTDGrammar.createAttributeDecl(Unknown Source)
at org.apache.xerces.impl.dtd.DTDGrammar.attributeDecl(Unknown Source)
at org.apache.xerces.impl.dtd.XMLDTDProcessor.attributeDecl(Unknown Source)
at org.apache.xerces.impl.XMLDTDScannerImpl.scanAttlistDecl(Unknown Source)
at org.apache.xerces.impl.XMLDTDScannerImpl.scanDecls(Unknown Source)
at org.apache.xerces.impl.XMLDTDScannerImpl.scanDTDExternalSubset(Unknown Source)
at org.apache.xerces.impl.XMLDocumentScannerImpl$DTDDispatcher.dispatch(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.dom4j.io.SAXReader.read(SAXReader.java:465)
at org.hibernate.cfg.Configuration.addInputStream(Configuration.java:499)
at org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:631)
at org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.java:211)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1367)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1333)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:471)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
at java.security.AccessController.doPrivileged(Native Method)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:220)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:423)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:729)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:381)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
2010-3-31 11:07:49 org.apache.catalina.core.ApplicationDispatcher invoke
严重: Servlet.service() for servlet jsp threw exception
java.lang.OutOfMemoryError: Java heap space
at java.util.AbstractList.iterator(AbstractList.java:275)
at org.hibernate.sql.SelectFragment.toFragmentString(SelectFragment.java:96)
at org.hibernate.persister.entity.AbstractEntityPersister.propertySelectFragment(AbstractEntityPersister.java:1006)
at org.hibernate.persister.entity.AbstractEntityPersister.selectFragment(AbstractEntityPersister.java:933)
at org.hibernate.loader.AbstractEntityJoinWalker.initStatementString(AbstractEntityJoinWalker.java:93)
at org.hibernate.loader.AbstractEntityJoinWalker.initStatementString(AbstractEntityJoinWalker.java:78)
at org.hibernate.loader.AbstractEntityJoinWalker.initAll(AbstractEntityJoinWalker.java:58)
at org.hibernate.loader.entity.CascadeEntityJoinWalker.<init>(CascadeEntityJoinWalker.java:27)
at org.hibernate.loader.entity.CascadeEntityLoader.<init>(CascadeEntityLoader.java:25)
at org.hibernate.persister.entity.AbstractEntityPersister.createLoaders(AbstractEntityPersister.java:3017)
at org.hibernate.persister.entity.AbstractEntityPersister.postInstantiate(AbstractEntityPersister.java:2977)
at org.hibernate.persister.entity.SingleTableEntityPersister.postInstantiate(SingleTableEntityPersister.java:690)
at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:290)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1294)
at org.springframework.orm.hibernate3.LocalSessionFactoryBean.newSessionFactory(LocalSessionFactoryBean.java:814)
at org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:732)
at org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.java:211)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1367)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1333)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:471)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
at java.security.AccessController.doPrivileged(Native Method)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:220)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:423)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:729)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:381)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)

解决方案 »

  1.   

    内存溢出了大哥!!干啥了你,查数据库的时候貌似不能总select * 这样很影响效率的得等内存释放了自己就好了,至于能不能手动释放掉内存方法我还真不知道,但是如果你用的是hibernate的话可能有释放缓存的方法吧.你可以查查
      

  2.   

    楼主的汤姆猫上挂了几个网站?
    我挂了6个(1个ssh,1个sh,4个纯servlet/jsp/jdbc。均为规模50~200个类的小web网站)有时会出这种问题,5个就没事儿。
    当然出现这个问题的原因还有很多。
    http://fengyouhua.javaeye.com/blog/131358
      

  3.   

    这是写的标签
    package com.yl.tag;import java.util.ArrayList;
    import java.util.Collection;import javax.servlet.ServletContext;
    import javax.servlet.jsp.JspException;
    import javax.servlet.jsp.tagext.Tag;
    import javax.servlet.jsp.tagext.TagSupport;import org.apache.struts2.ServletActionContext;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    import org.springframework.web.context.support.WebApplicationContextUtils;import com.yl.biz.impl.TagBizImpl;
    import com.yl.po.YAdvertising;public class AdvertisingTag extends TagSupport{ /**
     * 
     */
    private static final long serialVersionUID = -6290333326473312286L;

    //ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
    //ApplicationContext ctx= WebApplicationContextUtils.getRequiredWebApplicationContext(ServletActionContext.getRequest().getSession().getServletContext());


    public int doStartTag() throws JspException {
    // TODO Auto-generated method stub
    TagBizImpl tagBiz = new TagBizImpl();
    try {
    ArrayList<YAdvertising> recs;
    ServletContext application=pageContext.getServletContext();
    ApplicationContext ctx=WebApplicationContextUtils.getWebApplicationContext(application);

    tagBiz = (TagBizImpl) ctx.getBean("tagBiz");

    recs = tagBiz.getAdvertising(num, aid);


    pageContext.setAttribute(var, recs);
    recs = null;
    } catch (Exception e) {
    // TODO: handle exception
    System.out.println(e.getMessage());
    }


    return Tag.SKIP_BODY;
    }
    @Override
    public int doEndTag() throws JspException {
    // TODO Auto-generated method stub
    return this.EVAL_PAGE;
    }


    private Integer aid;
    private Integer num=15;
    private String var; public String getVar() {
    return var;
    }
    public void setVar(String var) {
    this.var = var;
    }
    public Integer getNum() {
    return num;
    }
    public void setNum(Integer num) {
    this.num = num;
    }
    public Integer getAid() {
    return aid;
    }
    public void setAid(Integer aid) {
    this.aid = aid;
    }

    }
      

  4.   

    已经OutOfMemory啦~~看看程序是否有资源未释放等类似漏洞,如果没有,尝试调优吧~~~~
      

  5.   

    public ArrayList<YSimages> getSimages(Integer num, Integer sid) {
    // TODO Auto-generated method stub
    String hql = "from YSimages where sid="+sid+"";
    return (ArrayList<YSimages>) tagDao.getSimages(hql, num);
    }
    public ArrayList<YSimages> getSimages(Integer num, String orderName, String descorasc) {
    // TODO Auto-generated method stub
    String hql = "from YSimages where sshow=0 order by "+orderName+" "+descorasc+"";
    return (ArrayList<YSimages>) tagDao.getSimages(hql, num);
    }
    public ArrayList<YSimages> getSimages(Integer num, String orderName) {
    // TODO Auto-generated method stub
    String hql = "from YSimages where sshow=0 order by "+orderName+"";
    return (ArrayList<YSimages>) tagDao.getSimages(hql, num);
    }
    public ArrayList<YSimages> getSimages(Integer num) {
    // TODO Auto-generated method stub
    String hql = "from YSimages where sshow=0";
    return (ArrayList<YSimages>) tagDao.getSimages(hql, num);
    }
    这是这个标签的实现类
      

  6.   

    public Collection getNews(String hql, Integer num)
    {
    /*
    List<YNews> newsList = new ArrayList<YNews>();
    Session session=this.getSession();

    Query query=session.createQuery(hql);
    query.setFirstResult(0);
    query.setMaxResults(num);
    newsList = query.list();

    return newsList;
    */
    final String sql = hql;
    final Integer number = num;
    return this.getHibernateTemplate().executeFind(new HibernateCallback(){
    public Object doInHibernate(Session session)
    throws HibernateException, SQLException {
    List<YNews> newsList = new ArrayList<YNews>();
    Query query=session.createQuery(sql);
    query.setFirstResult(0);
    query.setMaxResults(number);
    newsList = query.list();
    session.close();
    return newsList;
    }
    });
    }
    这个是dao,里面也有许多这种的方法