相关疑难解决方法(0)

OutOfMemoryError:PermGen Space - 在Tomcat上运行Spring的Jasper报告

我们的Web应用程序遇到了复杂的情况

它是由STS /开发的Spring应用程序Tomcat 7.应用程序集成后Jasper report 4.6.0,它总是抛出`OutOfMemoryError:PermGen Space.然后,让它工作的唯一方法是重新启动应用程序.但过了一段时间它又发生了.这是异常之前的日志:

Oct 17, 2012 3:42:27 PM org.apache.jasper.compiler.TldLocationsCache tldScanJar
INFO: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
Oct 17, 2012 3:42:30 PM org.apache.catalina.core.ApplicationDispatcher invoke
SEVERE: Servlet.service() for servlet jsp threw exception …
Run Code Online (Sandbox Code Playgroud)

java spring tomcat jstl jasper-reports

8
推荐指数
2
解决办法
1万
查看次数

java.lang.OutOfMemoryError:Play框架中的PermGen空间

编辑: - play ~run运行我的项目

如何删除这个问题,我的项目正处于测试阶段.每天5-6小时后它会突然停止并发出以下错误.该怎么做才能消除此错误?
我正在使用playframework 2.2在scala 2.1中开发这个项目

    java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: PermGen space
    at java.util.concurrent.FutureTask.report(FutureTask.java:122)
    at java.util.concurrent.FutureTask.get(FutureTask.java:188)
Caused by: java.lang.OutOfMemoryError: PermGen space
    at sun.misc.Unsafe.defineClass(Native Method)
    at sun.reflect.ClassDefiner.defineClass(ClassDefiner.java:63)
    at sun.reflect.MethodAccessorGenerator$1.run(MethodAccessorGenerator.java:399)
    at sun.reflect.MethodAccessorGenerator$1.run(MethodAccessorGenerator.java:396)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.reflect.MethodAccessorGenerator.generate(MethodAccessorGenerator.java:395)
    at sun.reflect.MethodAccessorGenerator.generateSerializationConstructor(MethodAccessorGenerator.java:113)
    at sun.reflect.ReflectionFactory.newConstructorForSerialization(ReflectionFactory.java:331)
    at java.io.ObjectStreamClass.getSerializableConstructor(ObjectStreamClass.java:1376)
    at java.io.ObjectStreamClass.access$1500(ObjectStreamClass.java:72)
    at java.io.ObjectStreamClass$2.run(ObjectStreamClass.java:493)
    at java.io.ObjectStreamClass$2.run(ObjectStreamClass.java:468)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.io.ObjectStreamClass.<init>(ObjectStreamClass.java:468)
    at java.io.ObjectStreamClass.lookup(ObjectStreamClass.java:365)
    at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:602)
    at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1622)
    at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1517)
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
    at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1706)
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1344)
    at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990)
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915)
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798)
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
    at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990)
    at …
Run Code Online (Sandbox Code Playgroud)

java memory memory-management scala playframework

8
推荐指数
2
解决办法
9306
查看次数

java.lang.OutOfMemoryError:PermGen空间错误

我已经为此阅读了所有类型的解决方案.一个链接在评论

处理"java.lang.OutOfMemoryError:PermGen space"错误

是迄今为止我发现的最好的.虽然相当复杂.

关键是,我得到这个错误只是用Maven编译一个项目.

据我所知,到目前为止还没有应用程序服务器.发生什么了?

我该怎么办?

这是我的错误:

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1:02.743s
[INFO] Finished at: Mon Sep 24 17:48:50 CEST 2012
[INFO] Final Memory: 77M/894M
[INFO] ------------------------------------------------------------------------
---------------------------------------------------
constituent[0]: file:/C:/Program%20Files%20(x86)/apache-maven-3.0.4/lib/aether-a
pi-1.13.1.jar
constituent[1]: file:/C:/Program%20Files%20(x86)/apache-maven-3.0.4/lib/aether-c
onnector-wagon-1.13.1.jar
constituent[2]: file:/C:/Program%20Files%20(x86)/apache-maven-3.0.4/lib/aether-i
mpl-1.13.1.jar
constituent[3]: file:/C:/Program%20Files%20(x86)/apache-maven-3.0.4/lib/aether-s
pi-1.13.1.jar
constituent[4]: file:/C:/Program%20Files%20(x86)/apache-maven-3.0.4/lib/aether-u
til-1.13.1.jar
constituent[5]: file:/C:/Program%20Files%20(x86)/apache-maven-3.0.4/lib/commons-
cli-1.2.jar
constituent[6]: file:/C:/Program%20Files%20(x86)/apache-maven-3.0.4/lib/maven-ae
ther-provider-3.0.4.jar
constituent[7]: file:/C:/Program%20Files%20(x86)/apache-maven-3.0.4/lib/maven-ar
tifact-3.0.4.jar
constituent[8]: file:/C:/Program%20Files%20(x86)/apache-maven-3.0.4/lib/maven-co
mpat-3.0.4.jar
constituent[9]: file:/C:/Program%20Files%20(x86)/apache-maven-3.0.4/lib/maven-co
re-3.0.4.jar
constituent[10]: file:/C:/Program%20Files%20(x86)/apache-maven-3.0.4/lib/maven-e
mbedder-3.0.4.jar
constituent[11]: file:/C:/Program%20Files%20(x86)/apache-maven-3.0.4/lib/maven-m
odel-3.0.4.jar
constituent[12]: file:/C:/Program%20Files%20(x86)/apache-maven-3.0.4/lib/maven-m
odel-builder-3.0.4.jar
constituent[13]: file:/C:/Program%20Files%20(x86)/apache-maven-3.0.4/lib/maven-p
lugin-api-3.0.4.jar
constituent[14]: …
Run Code Online (Sandbox Code Playgroud)

out-of-memory permgen maven

7
推荐指数
1
解决办法
4万
查看次数

java.lang.OutOfMemoryError:Jetty的PermGen空间错误

我现在正在接受java.lang.OutOfMemoryError: PermGen space.我正在使用Jetty和Linux Ubuntu.我曾尝试阅读和尝试以前类似问题中提供的不同解决方案,但我没有取得任何成功.一个类似的问题是

处理"java.lang.OutOfMemoryError:PermGen space"错误

但这些解决方案似乎使用Tomcat而不是Jetty.如果我重新部署我的服务几次,我会不断出现记忆错误.例如,要测试这个,我将转到我的webapps文件夹并运行touch*.xml来更新时间戳,然后重新运行jetty,我得到了内存不足错误.在我的jetty文件夹(包含bin,doc等,lib,日志,模块,start.jar)我正在运行

java -jar ../start.jar
Run Code Online (Sandbox Code Playgroud)

但这给了我错误.然后我尝试了我在其他示例中读到的内容,例如:

java -jar ../start.jar JAVA_OPTS="-Xms256m -Xmx512m -XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled"
Run Code Online (Sandbox Code Playgroud)

要么

-XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled
Run Code Online (Sandbox Code Playgroud)

要么

-XX:MaxPermSize=128m
Run Code Online (Sandbox Code Playgroud)

然后当我去firefox并导航localhost:8080并刷新时,在终端中我一直收到错误

java.lang.OutOfMemoryError: PermGen space
Run Code Online (Sandbox Code Playgroud)

java web-services jetty permgen

6
推荐指数
1
解决办法
9422
查看次数

调用jar文件时出现意外的java.lang.IllegalArgumentException

我正在尝试使用这里建议的一些额外的java选项来运行Jenkins war文件,但是我得到了异常:

Exception in thread "main" java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:601)
        at Main._main(Main.java:288)
        at Main.main(Main.java:98)
Caused by: java.lang.IllegalArgumentException: Multiple command line argument specified: -XX:+CMSClassUnloadingEnabled
        at winstone.cmdline.CmdLineParser.parse(CmdLineParser.java:68)
        at winstone.Launcher.getArgsFromCommandLine(Launcher.java:391)
        at winstone.Launcher.main(Launcher.java:359)
        ... 6 more
Run Code Online (Sandbox Code Playgroud)

java command-line jar options

4
推荐指数
1
解决办法
3684
查看次数

通过存储在字符串中的名称调用方法而无需反射 API?

我知道,使用反射 API,我们可以通过存储在字符串中的名称来调用方法。

但是,反射 API 不能用于高性能应用程序。在我的应用程序中,方法将以非常高的速度被调用。所以,我不能使用反射 API。

那么,反射 API 的替代方案是什么?

我做了研究,发现可以使用 cglib 和其他代码生成库。

但是,我没有找到任何通过存储在字符串中的名称来调用方法的示例。

使用反射替代方案的示例也很好。

更新: 实际上我正在实现一些主从通信 API。其中,slave 将远程调用 master 方法。而且,方法调用的速率非常高(每秒大约 50 次方法调用)。因为,主机不断轮询从机以获取任何响应。那么,我应该在如此高的调用率下进行反思吗?

java reflection cglib

4
推荐指数
1
解决办法
5318
查看次数

Hibernate:OutOfMemoryError:PermGen空间

有谁可以说我的申请有什么问题?

public class HibernateUtil {
    private static final SessionFactory sessionFactory;

    static {
        try {
            sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
        } catch (Throwable ex) {
            System.err.println("Initial SessionFactory creation failed." + ex);
            throw new ExceptionInInitializerError(ex);
        }
    }

    public static SessionFactory getSessionFactory() {
        return sessionFactory;
    }
}

public boolean insertUser(User user) {
    Session session = HibernateUtil.getSessionFactory().openSession();
    try {
        session.beginTransaction();
        session.save(user);
        session.getTransaction().commit();

    } catch (HibernateException he) {
        session.getTransaction().rollback();
        return false;
    }finally{
        if (session != null){
            session.close();
        }
    }

    return true;
}
Run Code Online (Sandbox Code Playgroud)

这是我调用在数据库中插入用户的唯一方法,然后如果我尝试插入另一个,则启动此异常:

Initial SessionFactory creation …
Run Code Online (Sandbox Code Playgroud)

java hibernate exception out-of-memory

3
推荐指数
2
解决办法
1万
查看次数

Eclipse:java.lang.OutOfMemoryError:PermGen空间

我的eclipse配置.

Eclipse:最新版本(开普勒)

我的eclipse config.ini

-startup
plugins/org.eclipse.equinox.launcher_1.3.0.v20130327-1440.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.200.v20130521-0416
-product
org.eclipse.epp.package.standard.product
--launcher.defaultAction
openFile
-showsplash
org.eclipse.platform
--launcher.defaultAction
openFile
--launcher.appendVmargs
-vmargs
-Dosgi.requiredJavaVersion=1.6
-Xms40M
-Xmx512M
Run Code Online (Sandbox Code Playgroud)

更新后从Juno到Kepler.But和configuration我没有遇到任何问题.

我面临的例外是

Caused by: java.lang.OutOfMemoryError: PermGen space
    at sun.misc.Unsafe.defineClass(Native Method)
    at sun.reflect.ClassDefiner.defineClass(ClassDefiner.java:45)
    at sun.reflect.MethodAccessorGenerator$1.run(MethodAccessorGenerator.java:381)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.reflect.MethodAccessorGenerator.generate(MethodAccessorGenerator.java:377)
    at sun.reflect.MethodAccessorGenerator.generateMethod(MethodAccessorGenerator.java:59)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:28)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at net.sf.beanlib.provider.BeanPopulator.invokeMethodAsPrivileged(BeanPopulator.java:221)
    at net.sf.beanlib.provider.BeanPopulator.doit(BeanPopulator.java:194)
    at net.sf.beanlib.provider.BeanPopulator.processSetterMethod(BeanPopulator.java:172)
    at net.sf.beanlib.provider.BeanPopulator.populate(BeanPopulator.java:270)
    at net.sf.beanlib.provider.replicator.ReplicatorTemplate.populateBean(ReplicatorTemplate.java:174)
    at net.sf.beanlib.provider.replicator.BeanReplicator.replicateBean(BeanReplicator.java:173)
    at net.sf.beanlib.hibernate3.Hibernate3JavaBeanReplicator.replicateBean(Hibernate3JavaBeanReplicator.java:71)
    at net.sf.beanlib.provider.replicator.ReplicatorTemplate.replicateByBeanReplicatable(ReplicatorTemplate.java:125)
    at net.sf.beanlib.provider.replicator.ReplicatorTemplate.replicate(ReplicatorTemplate.java:120)
    at net.sf.beanlib.provider.replicator.ReplicatorTemplate.replicate(ReplicatorTemplate.java:67)
    at net.sf.beanlib.hibernate3.Hibernate3CollectionReplicator.replicate(Hibernate3CollectionReplicator.java:143)
    at net.sf.beanlib.provider.replicator.CollectionReplicator.replicateCollection(CollectionReplicator.java:88)
    at net.sf.beanlib.hibernate3.Hibernate3CollectionReplicator.replicateCollection(Hibernate3CollectionReplicator.java:79)
    at net.sf.beanlib.provider.replicator.ReplicatorTemplate.replicate(ReplicatorTemplate.java:101)
    at …
Run Code Online (Sandbox Code Playgroud)

java eclipse eclipse-kepler

1
推荐指数
1
解决办法
3万
查看次数

增加基于Windows安装程序的Tomcat PermGen Space

我在使用Tomcat时遇到了一些问题.我正在部署Grails应用程序,当我添加新功能时,我在stacktrace文件中得到了这个(遗憾的是众所周知的)错误:

Caused by: java.lang.OutOfMemoryError: PermGen space
2014-01-13 19:28:35,753 [http-bio-8080-exec-26] ERROR StackTrace  - Full Stack Trace:
org.codehaus.groovy.runtime.InvokerInvocationException: java.lang.OutOfMemoryError: PermGen space
    at gsp_liquidaciones_liquidacionDeComplejolist_gsp$_run_closure2.doCall(gsp_liquidaciones_liquidacionDeComplejolist_gsp.groovy:84)
    at gsp_liquidaciones_liquidacionDeComplejolist_gsp.run(gsp_liquidaciones_liquidacionDeComplejolist_gsp.groovy:105)
    at grails.plugin.cache.web.filter.PageFragmentCachingFilter.doFilter(PageFragmentCachingFilter.java:195)
    at grails.plugin.cache.web.filter.AbstractFilter.doFilter(AbstractFilter.java:63)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
...
Run Code Online (Sandbox Code Playgroud)

我有一个基于Windows安装程序的tomcat安装,我也没有catalina.bat文件.谷歌搜索许多页面建议修改此文件(catalina.bat)或注册JAVA_OPTS变量,但没有任何作用.那么,我必须在哪里指定这些参数?:

SET JAVA_OPTS="-Dfile.encoding=UTF-8 -server -Xms512m -Xmx1024m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=256m -XX:MaxPermSize=256m -XX:+DisableExplicitGC”

我试图通过Apache Tomcat 7 Properties窗口修改Java Options,但是在修改之后服务器无法启动.

tomcat java配置选项卡

我的电脑安装了4Gb RAM.

提前致谢.

java windows grails tomcat

1
推荐指数
1
解决办法
2万
查看次数

对象的大小取决于它读取的内容

如果我有2个inputStream对象分别读取/保存4gb和4mb的文件.物体的大小是多少?对象的大小取决于内容吗?

处理大量的Excel文件时,我面临每个宝石错误.

java heap

1
推荐指数
1
解决办法
73
查看次数

内存何时发生?

最近,在运行我们的应用程序时,我们遇到了内存不足异常.

这是异常发生之前的堆转储

Heap
 def new generation   total 1572864K, used 366283K [0x00000006b0000000, 0x000000071aaa0000, 0x000000071aaa0000)
  eden space 1398144K, 13% used [0x00000006b0000000, 0x00000006bbb12d40, 0x0000000705560000)
  from space 174720K, 100% used [0x0000000710000000, 0x000000071aaa0000, 0x000000071aaa0000)
  to   space 174720K,   0% used [0x0000000705560000, 0x0000000705560000, 0x0000000710000000)

 tenured generation   total 3495296K, used 2658714K [0x000000071aaa0000, 0x00000007f0000000, 0x00000007f0000000)
  the space 3495296K,  76% used [0x000000071aaa0000, 0x00000007bcf06ba8, 0x00000007bcf06c00, 0x00000007f0000000)

 compacting perm gen  total 42048K, used 41778K [0x00000007f0000000, 0x00000007f2910000, 0x0000000800000000)
  the space 42048K,    99% used [0x00000007f0000000, 0x00000007f28ccb80, 0x00000007f28ccc00, 0x00000007f2910000)

No shared spaces configured.
Run Code Online (Sandbox Code Playgroud)

看起来老几乎已经满了(76%).我假设当它最终达到100%OOM发生时.然而,看起来伊甸园只有13%.

有人可以解释为什么OOM会发生,即使年轻人还有一些空间吗?

java garbage-collection jvm

1
推荐指数
1
解决办法
1761
查看次数