当前位置:编程学习 > JAVA >>

同样架构的两个项目放在一起就报错!

我有两个相同架构的项目,单独运行没问题,但是只要放在一起,启动时候不报错,一访问项目就报错,页面显示白色。
2013-2-28 11:21:13 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet Spring MVC threw exception
java.lang.OutOfMemoryError: PermGen space
at org.hibernate.ejb.criteria.CriteriaQueryCompiler.compile(CriteriaQueryCompiler.java:153)
at org.hibernate.ejb.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:587)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:240)
at $Proxy30.createQuery(Unknown Source)
at org.springframework.data.jpa.repository.support.SimpleJpaRepository.getQuery(SimpleJpaRepository.java:443)
at org.springframework.data.jpa.repository.support.SimpleJpaRepository.findAll(SimpleJpaRepository.java:238)
at org.springframework.data.jpa.repository.support.SimpleJpaRepository.findAll(SimpleJpaRepository.java:55)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.executeMethodOn(RepositoryFactorySupport.java:334)
at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.invoke(RepositoryFactorySupport.java:319)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:155)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.data.jpa.repository.support.LockModeRepositoryPostProcessor$LockModePopulatingMethodIntercceptor.invoke(LockModeRepositoryPostProcessor.java:91)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:90)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
at $Proxy57.findAll(Unknown Source)
at net.xqx.controller.web.IndexController.getIndex(IndexController.java:201)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) --------------------编程问答-------------------- java.lang.OutOfMemoryError: PermGen space
at org.hibernate.ejb.criteria.CriteriaQueryCompiler.compile(CriteriaQueryCompiler.java:153)


1.连接是否没有及时释放,造成内存溢出
2.相互竞争资源,造成内存溢出
--------------------编程问答-------------------- 这个是内存溢出异常,需要修改tomcat配置。
话说回来,你两个项目不是使用相同的资源导致了某资源使用异常吧,比如回收时被对方占用,回收不了,或者时你两个项目运行时需要加载非常多的class?

手动设置一下MaxPermSize大小吧,文本文件或者editplus打开TOMCAT_HOME/bin/catalina.sh,在"echo "Using CATALINA_BASE:$CATALINA_BASE"上面加入"JAVA_OPTS="-server -XX:PermSize=64M -XX:MaxPermSize=128m"。

默认是4M。
--------------------编程问答-------------------- 不过建议最好还是优化一下程序。 --------------------编程问答--------------------
引用 1 楼 fangmingshijie 的回复:
java.lang.OutOfMemoryError: PermGen space
at org.hibernate.ejb.criteria.CriteriaQueryCompiler.compile(CriteriaQueryCompiler.java:153)


1.连接是否没有及时释放,造成内存溢出
2.相互竞争资源,造成内存溢出

++ --------------------编程问答--------------------
引用 1 楼 fangmingshijie 的回复:
java.lang.OutOfMemoryError: PermGen space
at org.hibernate.ejb.criteria.CriteriaQueryCompiler.compile(CriteriaQueryCompiler.java:153)


1.连接是否没有及时释放,造成内存溢出
2.相互竞争资源,造成内存溢出


两个项目链接不同的数据库,首页加载的东西也不动,我调试发现,方法能正常读取完。所以应该不是没有及时释放造成的。相互竞争资源什么什么意思,要怎么解决呢? --------------------编程问答-------------------- 是代码类缓存用完了。相当于代码段放不下所有的程序代码了。
一般大型工程,class比较多或引用JAR包比较多时容易出现。 --------------------编程问答--------------------
引用 6 楼 chouy 的回复:
是代码类缓存用完了。相当于代码段放不下所有的程序代码了。
一般大型工程,class比较多或引用JAR包比较多时容易出现。

那要怎么解决呢? --------------------编程问答-------------------- 修改JVM大小 --------------------编程问答-------------------- 修改JVM缓存大小
补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,