java.lang.OutOfMemoryError: PermGen space

本文详细介绍了在遇到Eclipse编译版本与Tomcat运行环境版本不一致导致的OutOfMemoryError问题时的解决方法。通过调整Eclipse和Tomcat的JRE版本匹配,成功解决了内存溢出的问题。

一般情况下OOM,那就扩呗 ,往大调一下就OK,一般的eclipse的大小,都是调整eclipse目录下的eclipse.ini中的参数。


运行的jvm的参数可以下图所示的Default VM Arguments  中的数值,默认是不填的,默认的我也不知道她是参考哪个的哈哈。。。应该有个默认配置也就是物理内存的1/8吧


可以输入一下参数:-Xms256m -Xmx1024m  -XX:PermSize=256M -XX:MaxNewSize=256m -XX:MaxPermSize=256m  

也可以按照你的需要自己配置,但是要注意  Xmx的最大值 只能是 你内存的1/4 也就是说 32位的你最大也就 1024   8G内存的也就是2G=2048M

下面是特殊的OOM,先声明,这个OOM的原因一般人都遇不到哈哈,自己配的错误引起的  只在此记录下


由于本人在老机器上加了内存条,换了64位的系统 ,eclipse中的java——>installed JREs ——>edit 看了一下我的eclipse的编译的JDK版本是64位的


然后很蠢的是 tomcat下的运行环境配置确实不对的 Server ——>Runtime Environment ——选中——Edit——>JRE 



然后 server都可以起,但是起不来哈哈  跑一段时间后 就报了    OOM 最后火眼金睛的我终于发现  Eclipse的编译用的是JDK1.7的 而Server的tomcat的JRE用的是1.6    麻蛋  1.7编译的版本到1.6的JRE去运行  肯定不OK ,个人感觉 你用1.6的编译 在1.7的下面去跑是OK的 ,我去尝试了一下  是可以的   1.6编译的class在1.7的JRE是可以运行的。毕竟可以向下兼容的哈。




### 回答1: "java.lang.outofmemoryerror: permgen space" 意思是Java虚拟机的永久代空间已经用完了。这是由于在运行过程中加载的类或元数据占用了太多的内存,导致永久代空间不足。可以通过增加永久代空间的大小来解决这个问题。 ### 回答2: Java.lang.outofmemoryerror: permgen spaceJava虚拟机在执行Java应用时,当永久代的内存被占满了,而无法再为新的类、反射信息、字符串等分配内存时所抛出的异常。一般来说,Java应用使用的是堆内存和永久代内存,而堆内存主要是用于对象实例化和存储,而永久代内存则主要用于存储类信息、方法信息、静态变量信息以及字符串常量等元数据信息。因此,当应用程序中有大量动态创建的类或字符串常量等元数据信息时,就容易导致永久代内存被占满,从而导致该错误发生。 要解决Java.lang.outofmemoryerror: permgen space,可以采取以下几种方法: 1、增大永久代内存:可以通过设置JVM参数-XX:PermSize和-XX:MaxPermSize来增大永久代内存的大小。 2、JVM升级:JVM的新版本优化了永久代内存的管理方式,可以通过升级JVM来解决该错误。 3、清理未使用的类:可以使用一些工具来对应用程序中未使用的类进行清理,从而释放永久代内存。 4、优化应用程序:可以对应用程序进行优化,减少其动态创建类和字符串常量等元数据信息的数量,从而减少永久代内存的占用。 5、重启应用程序:如果以上方法都未能解决该错误,可以尝试重启应用程序,从而释放永久代内存。 总之,Java.lang.outofmemoryerror: permgen space是开发过程中比较常见的错误,需要根据具体情况采取不同的解决方法。 ### 回答3: Java.lang.OutOfMemoryError: PermGen space(永久代空间)通常是在JVM内存不足时发生的错误。PermGen space指的是JVM用于存储类、方法定义等元数据的永久代空间。当JVM加载过多的类、方法或者字符串等时,PermGen space的空间可能会被耗尽,导致OutOfMemoryError的错误。 为了避免Java中的OutOfMemoryError: PermGen space错误,可以采取以下措施: 1. 调整JVM的参数。通过增加PermGen space的大小来缓解这个错误。可以通过在Java命令中使用-XX:PermSize和-XX:MaxPermSize参数来增加永久代的大小,但这样做只解决了问题的表面,没有根本解决这个问题。 2. 优化代码和资源管理。优化代码可以减少类和方法等元数据的数量,同时及时释放程序中不再需要的对象,防止内存泄漏等资源浪费现象。 3. 尽量避免使用动态代理、反射等技术。这些技术会增加系统的开销,导致产生更多的类和方法等元数据,可能会加重PermGen space的压力。 总之,避免OutOfMemoryError: PermGen space错误需要细致的内存管理及代码调优。理性使用JVM的参数调整,避免过渡依赖动态代理、反射等技术是有效的措施。同时,可以借助各种性能工具和监控工具对程序进行优化和管理,提升应用的性能和稳定性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值