VM 的Permanent generation space,实际上就是方法区,存储了下面两种类型的数据:
1.Class的节本信息
Package Name
Super class package name
Class or interface
Type modifiers
Super inferface package name
2.其它信息
The constant pool for the type
Field information
Method information
All class (static) variables declared
in the type, except constants
A reference to class ClassLoader
A reference to class Class
本来SUN设计的时候认为这个区域在JVM启动的时候就固定了,但他没有想到现在动态会用得这么广泛。而且这个区域有特殊的垃圾收回机制,现在的问题是动态加载类到这个区域后,gc根本没办法回收!
现在开发中最常见的错误莫过于Permgen Space!
解决办法:
1,把不必要的 jar 文件清理出 lib;
2,不要频繁地进行 reload;
3,增加 PermGen Space 内存区域,默认是 64MB,可以采用 -XX:MaxPermSize 这个 JVM 参数改这块区域改大一些,这个参数详见:
http://java.sun.com/javase/technologies/hotspot/vmoptions.jsp
如果用的是 Tomcat 的话,可以在 catalina.bat 开始处增加一行 set JAVA_OPTS=-XX:MaxPermSize=128m
相关推荐
JAVA内存溢出 JAVA中OutOfMemoryError(内存溢出)的三种情况及解决办法 Java中的OutOfMemoryError(内存溢出)是一种常见的错误,本文将详细介绍OutOfMemoryError的三种情况及其解决方法。 首先,我们需要了解...
PermGen space 是 Permanent Generation space 的缩写,表示内存的永久保存区域。这个区域用于存放 Class 和 Meta 信息。Class 在被 Load 时就会被放入 PermGen space 区域,它和存放 Instance 的 Heap 区域不同。...
在Java编程中,"java heap space"内存溢出是一个常见的问题,它通常发生在应用程序尝试分配超过JVM堆内存限制的对象时。这个问题对于任何Java开发者来说都至关重要,因为如果不妥善处理,可能会导致程序崩溃。以下是...
Java虚拟机(JVM)管理着多种不同类型的内存区域,包括堆内存(Heap Memory)、方法区(Method Area)、永久代(Permanent Generation Space)等。不同的内存区域有着不同的作用和特点: 1. **堆内存**:这是应用程序中对象...
Java内存不足PermGen space错误通常出现在Java程序运行过程中,尤其是当Java EE服务器(如Tomcat、JBoss等)加载WAR或EAR包时。这个错误的根本原因在于Java虚拟机(JVM)的永久代(Permanent Generation Space)内存...
### Java内存结构详解 ...Java内存模型的设计是为了高效地管理内存资源,确保程序能够稳定运行。通过对堆、栈、方法区以及本地方法栈的理解,我们可以更好地优化Java程序的性能,避免内存泄漏等问题的发生。
#### 二、Java内存管理基础知识 在理解内存泄露和溢出之前,我们需要先了解Java虚拟机(JVM)的基本内存结构及其管理机制: 1. **JVM内存区域**: - **年轻代(Young Generation)**: 包括Eden区和两个Survivor区...
Java内存溢出问题通常指的是Java应用程序在运行过程中由于内存分配不当或使用过度导致JVM无法分配更多的内存,从而抛出`java.lang.OutOfMemoryError`异常。本文将深入探讨Java内存溢出的不同类型及其解决方案。 1. ...
Java内存监控是Java应用程序性能优化的关键环节,它可以帮助开发者识别并解决内存泄漏、垃圾收集问题以及潜在的服务器性能瓶颈。本文将深入探讨Java内存监控的相关知识点,并提供实用的命令工具来帮助你查找和解决...
《JAVA内存调优白皮书(IBM)》是IBM公司发布的一份技术文档,主要针对Java应用程序的内存管理和性能优化提供了深入的指导。在Java世界中,内存管理是决定程序性能、稳定性和可扩展性的重要因素,特别是Java虚拟机...
Java虚拟机(JVM)是Java应用程序的运行环境,它负责执行字节码并管理内存...通过上述方法,可以有效地预防和解决`java.lang.OutOfMemoryError: Java heap space`问题,优化JVM内存管理,提升应用程序的稳定性和性能。
PermGen space 溢出是指 Permanent Generation space 的内存溢出。PermGen space 是 JVM 存放 Class 和 Meta 信息的区域。如果程序载入了太多的 CLASS,可能会导致 PermGen space 溢出。解决方法是通过-XX:PermSize ...
PermGen(Permanent Generation)是Java虚拟机(JVM)的一个内存区域,主要用于存储类的元数据,如类的名称、方法信息等。与堆区不同,堆区中的对象在不再被引用时会被垃圾收集器(Garbage Collector, GC)回收,但...
总之,"java.lang.OutOfMemoryError: PermGen space"错误是由于Java虚拟机的 PermGen 区域内存不足造成的,可以通过增大 PermGen 区域的大小、升级JVM版本、优化类加载和库的使用等方式来解决。对于任何内存管理问题...
PermGen空间,全称为Permanent Generation space,是Java虚拟机(JVM)内存管理的一部分,主要用来存储类和元数据信息。当Java类加载器加载类时,这些类的信息会被存储到PermGen空间中。这与存放类实例的堆区(Heap...
本文主要讨论如何解决MyEclipse中的内存溢出问题以及相关的Java内存管理知识点。 首先,解决内存溢出问题的关键在于调整JVM的内存配置。在MyEclipse中,可以通过以下路径进行设置:Window > Preferences > ...
- 堆是Java内存模型中的主要部分,主要用于存储对象实例。所有的类实例和数组都在堆中分配内存。 - 堆内存是动态分配的,大小可变,由Java虚拟机(JVM)管理。 - 垃圾回收机制(Garbage Collection, GC)负责自动...
JVM内存模型是Java虚拟机(JVM)中的一种内存管理机制,它将内存区分为永久区内存(Permanent space)和堆内存(heap space)两大块。永久区内存用于存放加载的Class类级对象,如class本身、method、field等等,而堆...