首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Eclipse中运行Tomcat遇到的内存溢出错误

使用Eclipse(版本Indigo 3.7)调试Java项目的时候,遇到了下面的错误: Exception in thread “main” Java.lang.OutOfMemoryError: PermGen...,在Eclipse集成的Tomcat环境下,频繁进行热发布的时候会出现这个情况。...了解到该原因是因为默认分配给JVM的内存为4M,而Eclipse中有BUG导致eclipse.ini中的参数无法传递给Tomcat,这样在项目加载内容较多时,很容易造成内存溢出。...解决方案为增加JVM的内存空间。 有一点需要注意,因为使用的是Eclipse中集成的Tomcat,因此要在下面的界面中设置。 ? ?...中通过Tomcat运行JavaWeb项目发生内存溢出:java.lang.OutOfMemoryError: PermGen space 错误的解决方案 2、Download Eclipse 3、Java

1.4K40

Java 内存溢出(OOM)异常完全指南

java.lang.OutOfMemoryError: Java heap space Java 应用程序在启动时会指定所需要的内存大小,它被分割成两个不同的区域:Heap space(堆空间)和Permgen...java.lang.OutOfMemoryError: Permgen space Java 中堆空间是 JVM 管理的最大一块内存空间,可以在 JVM 启动时指定堆空间的大小,其中堆被划分成两个不同的区域...代码在运行时不停的生成类并加载到永久代中,直到撑满永久代内存空间,最后抛出java.lang.OutOfMemoryError: Permgen space。...提升 GC 性能,在 HotSpot 中的每个垃圾收集器需要专门的代码来处理存储在 PermGen 中的类的元数据信息。...就像这些工人都在物理世界,JVM 中的线程完成自己的工作也是需要一些空间的,当有足够多的线程却没有那么多的空间时就会像这样: [thread-limit] 出现java.lang.OutOfMemoryError

4.6K23
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    OutOfMemory及其解决方法「建议收藏」

    大家好,又见面了,我是你们的朋友全栈君。 一、内存溢出类型 1、java.lang.OutOfMemoryError: PermGen space JVM管理两种类型的内存,堆和非堆。...PermGen space中,它和存放类实例(Instance)的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的应用中有很...堆内存用来存放由new创建的对象和数组 在函数(代码块)中定义一个变量时,java就在栈中为这个变量分配内存空间,当超过变量的作用域后,java会自动释放掉为该变量所分配的内存空间;在堆中分配的内存由...tomcat中java.lang.OutOfMemoryError: Java heap space异常处理 一、Heap size JVM堆的设置是指java程序运行过程中JVM可以调配使用的内存空间的设置...运行Jboss时java.lang.OutOfMemoryError:PermGen space异常处理 在Eclipse中运行Jboss时,时间太长可能有时候会出现java.lang.OutOfMemoryError

    10K10

    JAVA的内存模型及结构

    所有的Java开发人员可能会遇到这样的困惑?我该为堆内存设置多大空间呢?OutOfMemoryError的异常到底涉及到运行时数据的哪块区域?该怎么解决呢?...原始类型的本地变量以及引用都存放在线程栈中。而引用关联的对象比如String,都存在在堆中。为了更好的理解上面这段话,我们可以看一个例子: ? 这段程序的数据在内存中的存放如下: ?...通过JConsole工具可以查看运行中的Java程序(比如Eclipse)的一些信息:堆内存的分配,线程的数量以及加载的类的个数; ?...: Java heap space 原因:对象不能被分配到堆内存中 Exception in thread “main”: java.lang.OutOfMemoryError: PermGen space...size exceeds VM limit 原因:创建的数组大于堆内存的空间 Exception in thread “main”: java.lang.OutOfMemoryError: request

    39920

    有什么好的解决方法?

    Java heap space 当堆内存(Heap Space)没有足够空间存放新创建的对象时,就会抛出 java.lang.OutOfMemoryError: Java heap space错误(根据实际生产经验...,可以对程序日志中的 OutOfMemoryError 配置关键字告警,一经发现,立即处理)。...解决方案 根据 Permgen space 报错的时机,可以采用不同的解决方案,如下所示: 程序启动报错,修改 -XX:MaxPermSize 启动参数,调大永久代空间。...此类问题的原因与解决方法跟 Permgen space 非常类似,可以参考上文。需要特别注意的是调整 Metaspace 空间大小的启动参数为 -XX:MaxMetaspaceSize。 5....native 线程,并为其分配内存; 如果操作系统的虚拟内存已耗尽,或是受到 32 位进程的地址空间限制,操作系统就会拒绝本次 native 内存分配; JVM 将抛出 java.lang.OutOfMemoryError

    1.6K20

    异常、堆内存溢出、OOM的几种情况

    >  【情况三】:    java.lang.OutOfMemoryError: PermGen space:这种是P区内存不够,可通过调整JVM的配置:    -XX:MaxPermSize...出现这种异常,一般手段是先通过内存映像分析工具(如Eclipse Memory Analyzer)对dump出来的堆转存快照进行分析,重点是确认内存中的对象是否是必要的,先分清是因为内存泄漏(Memory...3, 运行时常量池溢出 异常信息:java.lang.OutOfMemoryError:PermGen space 如果要向运行时常量池中添加内容,最简单的做法就是使用String.intern()这个...异常信息:java.lang.OutOfMemoryError:PermGen space 方法区溢出也是一种常见的内存溢出异常,一个类如果要被垃圾收集器回收,判定条件是很苛刻的。...在经常动态生成大量Class的应用中,要特别注意这点。

    1.5K40

    异常、堆内存溢出、OOM的几种情况

    > 【情况三】:   java.lang.OutOfMemoryError: PermGen space:这种是P区内存不够,可通过调整JVM的配置:   -XX:MaxPermSize...出现这种异常,一般手段是先通过内存映像分析工具(如Eclipse Memory Analyzer)对dump出来的堆转存快照进行分析,重点是确认内存中的对象是否是必要的,先分清是因为内存泄漏(Memory...3, 运行时常量池溢出 异常信息:java.lang.OutOfMemoryError:PermGen space 如果要向运行时常量池中添加内容,最简单的做法就是使用String.intern()这个...异常信息:java.lang.OutOfMemoryError:PermGen space 方法区溢出也是一种常见的内存溢出异常,一个类如果要被垃圾收集器回收,判定条件是很苛刻的。...在经常动态生成大量Class的应用中,要特别注意这点。

    89910

    深入理解Java中的内存溢出内存溢出内存溢出的几种情况(OOM 异常)导致内存溢出的原因内存溢出的解决方法

    内存溢出 程序运行过程中无法申请到足够的内存而导致的一种错误。...如果虚拟机在扩展栈时无法申请到足够的内存空间 ,则抛出OutOfMemoryError异常。...出现这种异常, 一般手段是先通过内存映像分析工具(如 Eclipse Memory Analyzer)对 dump 出来的堆转存快照进行分析, 重点是确认内存中的对象是否是必要的, 先分清是因为内存泄漏...如果不存在泄漏, 那就应该检查虚拟机的参数(-Xmx 与-Xms)的设置是否适当 3.方法区溢出 异常信息: java.lang.OutOfMemoryError:PermGen space。...4.运行时常量池溢出 异常信息: java.lang.OutOfMemoryError:PermGen space。

    2.8K10

    《深入理解java虚拟机》笔记(3)实战:OutOfMemoryError异常

    单个线程下,无论是由于栈帧太大还是虚拟机栈容量太小,虚拟机抛出的都是StackOverflowError。 如果虚拟机扩展栈时,无法申请到足够的空间,将抛出OutOfMemoryError异常。...:Exception in thread "main" java.lang.OutOfMemoryError: PermGen space 其中PermGen space指示内存溢出发生在运行时常量池中...在jdk7的环境中运行得到的结果却是: Exception in thread "main" java.lang.OutOfMemoryError: Java heap space  指示内存溢出发生在堆中而不是方法区中的常量池...因为在 JDK1.2 ~ JDK6 的实现中,HotSpot 使用永久代实现方法区,而从 JDK7 开始 Oracle HotSpot 开始移除永久代,JDK7中符号表被移动到 Native Heap中...在 JDK8 中,永久代已完全被元空间(Meatspace)所取代。

    29160

    java.lang.OutOfMemoryError: PermGen spacejava.lang.OutOfMemoryError: PermGen space

    java.lang.OutOfMemoryError: PermGen space Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler...不能回收; 代码中存在死循环或循环产生过多重复的对象实体; 使用的第三方软件中的BUG; 启动参数内存值设定的过小; 此错误常见的错误提示: tomcat:java.lang.OutOfMemoryError...因此,从根本上解决Java内存溢出的唯一方法就是修改程序,及时地释放没用的对象,释放内存空间。 遇到该错误的时候要仔细检查程序,嘿嘿,遇多一次这种问题之后,以后写程序就会小心多了。...tomcat中java.lang.OutOfMemoryError: PermGen space异常处理 PermGen space的全称是Permanent Generation space,是指内存的永久保存区域...,这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被放到PermGen space中, 它和存放类实例(Instance)的Heap区域不同,GC(Garbage

    79420

    线上应用故障排查之二:高内存占用

    搞Java开发的,经常会碰到下面两种异常: 1、java.lang.OutOfMemoryError: PermGen space 2、java.lang.OutOfMemoryError: Java...(1)新生代New:新建的对象都存放这里 (2)老生代Old:存放从新生代New中迁移过来的生命周期较久的对象。新生代New和老生代Old共同组成了堆内存。...如果出现java.lang.OutOfMemoryError: Java heap space异常,说明Java虚拟机的堆内存不够。...如果出现java.lang.OutOfMemoryError: PermGen space,说明是Java虚拟机对永久代Perm内存设置不够。...具体怎么使用可以查看本博的另一篇文章:利用Eclipse Memory Analyzer Tool(MAT)分析内存泄漏 这里详细介绍下jmap -histo:live [pid] 命令: 从上图可以看出

    1.3K30

    深入理解JVM虚拟机1:JVM内存的结构与消失的永久代

    通过JConsole工具可以查看运行中的Java程序(比如Eclipse)的一些信息:堆内存的分配,线程的数量以及加载的类的个数; ?...: Java heap space 原因:对象不能被分配到堆内存中 Exception in thread “main”: java.lang.OutOfMemoryError: PermGen space...,只不过是JNI或者本地方法或者Java虚拟机发现 JDK8-废弃永久代(PermGen)迎来元空间(Metaspace) 1.背景 2.为什么废弃永久代(PermGen) 3.深入理解元空间(Metaspace...1.新生代:Eden+From Survivor+To Survivor 2.老年代:OldGen 3.永久代(方法区的实现) : PermGen----->替换为Metaspace(本地内存中) 二、...2.2 现实使用中易出问题 由于永久代内存经常不够用或发生内存泄露,爆出异常java.lang.OutOfMemoryError: PermGen 其实在JDK7时就已经逐步把永久代的内容移动到其他区域了

    50040

    Java虚拟机--运行时数据区与内存溢出

    JDK1.8之后已经将这个方法区删除了,使用元空间,metaspace代替了,理由有如下: 1.方法区存放的是常量,容易造成内存溢出,outofmemory:permGen space 2.编译后的代码...3.同时永久代的GC复杂,回收效率偏低。 ? 元空间常用的配置参数 1.MetaspaceSize 初始化的Metaspace大小,控制元空间发生GC的阈值。...: Java heap space 新生代中,new 出来的对象会被放到Eden,第一次Mirror GC 之后,会被转移到 from survivor, 新生代采用的是复制算法进行MirrorGC...溢出一般会报错 java.lang.OutOfMemoryError: PermGen space JDK 1.8之后去除了PermGen space 使用Metaspace 代替了,如果方法区溢出,...,也不是 Java 虚拟机规范中定义的内存区域,但 Java 中用到 NIO 相关操作时(比如 ByteBuffer 的 allocteDirect 方法申请的是本机直接内存),也可能会出现内存溢出的异常

    48430
    领券