Geronimo在重复装载一个工程的时候抛java.lang.OutOfMemoryError: PermGen space 异常。
JVM的PermGen内存溢出了。
改动setjavaenv.bat中的设置解决该问题。
set JAVA_OPTS="-Xms512m" "-Xmx512m" "-XX:PermSize=512m" "-XX:MaxPermSize=512m"
JConsole中关于内存分区的说明。
Eden Space (heap): 内存最初从这个线程池分配给大部分对象。
Survivor Space (heap):用于保存在eden space内存池中经过垃圾回收后没有被回收的对象。
Tenured Generation (heap):用于保持已经在 survivor space内存池中存在了一段时间的对象。
Permanent Generation (non-heap): 保存虚拟机自己的静态(refective)数据,例如类(class)和方法(method)对象。Java虚拟机共享这些类数据。这个区域被分割为只读的和只写的,
Code Cache (non-heap):HotSpot Java虚拟机包括一个用于编译和保存本地代码(native code)的内存,叫做“代码缓存区”(code cache)
分享到:
相关推荐
总之,"java.lang.OutOfMemoryError: PermGen space"错误是由于Java虚拟机的 PermGen 区域内存不足造成的,可以通过增大 PermGen 区域的大小、升级JVM版本、优化类加载和库的使用等方式来解决。对于任何内存管理问题...
启动JConsole后,选择目标进程并查看内存页面下的“Perm Gen”部分,可以直观地看到当前PermGen space的使用情况,从而判断设置是否生效。 4. **优化代码**: - 减少不必要的类加载和字符串常量池的使用。例如,...
通过以上方法,可以有效地解决因PermGen space不足导致的`java.lang.OutOfMemoryError`问题。需要注意的是,虽然增加PermGen space的大小是一种简单直接的方法,但从长远来看,优化代码和类加载机制才是更为根本的...
- `-XX:PermSize` 参数用于设置JVM初始的非堆内存(即PermGen空间)大小,如 `-XX:PermSize=64M` 指定 PermGen 初始分配64MB。 - `-XX:MaxPermSize` 参数则是设定 PermGen 空间的最大值,如 `-XX:MaxPermSize=128M` ...
本文将针对两种常见的Java内存溢出错误——`java.lang.OutOfMemoryError: PermGen space`和`java.lang.OutOfMemoryError: Java heap space`进行详细的分析和解决方案的探讨。 首先,我们来看`java.lang....
解决 Eclipse 中通过 Tomcat 运行 J2EE 项目 java.lang.OutOfMemoryError PermGen space 的关键是增加 JVM 的内存空间,通过添加合适的参数,可以避免 PermGen space 溢出,确保项目的稳定运行。
此外,升级到Java 8及以上版本也是一个有效的解决方案,因为这些版本的JVM已经用Metaspace取代了PermGen,Metaspace具有更灵活的内存管理机制,可以自动扩展以适应应用需求,从而减少了此类内存溢出问题的发生。
- 这样设置后,JVM的初始堆内存大小为128MB,最大堆内存大小为512MB。根据实际需求调整这两个值的大小。 2. **优化代码逻辑**: - 检查并优化程序中可能存在的内存泄漏问题,确保不再使用的对象能够及时被垃圾...
最初尝试通过修改`catalina.bat`文件中的JVM参数来解决问题,但由于没有正确地指定PermGen空间的大小,导致问题仍然存在。随后,尝试在MyEclipse中调整Tomcat服务器的JVM参数,最终解决了问题。具体步骤包括: 1. *...
1. 使用 `-Xmx` 参数增加堆的最大使用内存:可以在启动 JVM 时添加 `-Xmx` 参数,例如 `-Xmx512m`,以设置堆的最大使用内存。 2. 使用 `-Xms` 参数设置堆的初始大小:可以在启动 JVM 时添加 `-Xms` 参数,例如 `-Xms...
其中,“java.lang.OutOfMemoryError: Java heap space”是一种常见的异常情况,它表明Java虚拟机(JVM)的堆内存空间已耗尽。 #### 标题和描述中的知识点详解 **标题:“java错误处理:java.lang.OutOfMemoryError:...
解决 JVM 中的 PermGen space 问题 PermGen space(Permanent Generation space)是 JVM 中的一块永久保存区域,用于存放 Class 和 Meta 信息。当应用程序加载 Class 时,Class 就会被放入 PermGen space 区域中,...
JVM 内存溢出类型有两种:java.lang.OutOfMemoryError: PermGen space 和 java.lang.OutOfMemoryError: Java heap space。PermGen space 是非堆内存,用于存放类的信息,GC 不会释放该空间。如果 web 应用使用了大量...
PermGen(Permanent Generation)是Java虚拟机(JVM)的一个内存区域,主要用于存储类的元数据,如类的名称、方法信息等。与堆区不同,堆区中的对象在不再被引用时会被垃圾收集器(Garbage Collector, GC)回收,但...
对于现代JVM版本(Java 8及以上), PermGen已被Metaspace取代,可以调整Metaspace大小。 2. **JVM heap space溢出** - **heap space** 主要用于存储Java运行时的对象,这些对象会在垃圾收集(GC)过程中被清理。 ...
4. **调整PermGen空间**:在Java 8之前, PermGen 区域用于存储类的元数据,如果这个区域耗尽,会出现`java.lang.OutOfMemoryError: PermGen space`错误。在Java 8中,这部分被MetaSpace取代,可通过`-XX:...
Java JVM 虚拟机选项 Xms Xmx ...如果 MaxPermSize 设置过小,可能会导致 java.lang.OutOfMemoryError: PermGen space。 因此,合理地配置 JVM 的内存参数是非常重要的,可以避免内存溢出错误和提高应用的性能。