`
BradyZhu
  • 浏览: 261187 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JVM中的out of memory错误原因

 
阅读更多

JVM为两块:PermanentSapce和HeapSpace,其中

Heap = {Old + NEW = { Eden , from, to } }。PermantSpace负责保存反射对象,一般不用配置。JVM的Heap区可以通过-X参数来设定。

  当一个URL被访问时,内存申请过程如下:

A. JVM会试图为相关Java对象在Eden中初始化一块内存区域

B. 当Eden空间足够时,内存申请结束。否则到下一步

C. JVM试图释放在Eden中所有不活跃的对象(这属于1或更高级的垃圾回收), 释放后若Eden空间仍然不足以放入新对象,则试图将部分Eden中活跃对象放入Survivor区

D. Survivor区被用来作为Eden及OLD的中间交换区域,当OLD区空间足够时,Survivor区的对象会被移到Old区,否则会被保留在Survivor区

E. 当OLD区空间不够时,JVM会在OLD区进行完全的垃圾收集(0级)

F. 完全垃圾收集后,若Survivor及OLD区仍然无法存放从Eden复制过来的部分对象,导致JVM无法在Eden区为新对象创建内存区域,则出现”out of memory错误”

分享到:
评论

相关推荐

    tomcat out of memory

    当Java虚拟机(JVM)无法分配足够的内存来执行任务时,就会抛出“Out of Memory”错误。以下是对这个问题的详细分析和解决方案: 1. **内存溢出原因**: - **内存分配不足**:Tomcat默认的内存设置可能不足以应对...

    BlazeDS+Spring+activeMQ outofmemory

    标题 "BlazeDS+Spring+activeMQ outofmemory" 指的是在使用BlazeDS、Spring和ActiveMQ集成的环境中遇到了内存溢出问题。BlazeDS是一个开放源码的服务器端技术,它允许双向通信,使Flex或AJAX客户端能够与Java后端...

    OutOfMemory的一个解决方法

    在Java编程中,`OutOfMemoryError`是一种常见的运行时异常,它通常发生在JVM试图为新对象分配内存时,但堆内存空间已满或无法进一步扩展的情况下。这个错误可以分为几种类型,包括`PermGen space`、`Heap Space`、`...

    tomcat out of memory solution

    标题与描述中的关键词“Tomcat Out of Memory Solution”指向了在运行Tomcat服务器时遇到内存溢出错误(Out of Memory Error)的解决方法。在IT领域,尤其是Java应用服务器环境中,Tomcat作为一款广泛使用的开源轻量...

    解决Python运行文件出现out of memory框的问题

    本文将深入探讨Python运行文件时出现“out of memory”错误的原因、解决策略以及如何优化内存使用。 首先,我们要理解Python内存管理的基本原理。Python采用自动内存管理,包括垃圾回收机制,它会自动回收不再使用...

    JVM crash 错误日志分析

    在分析日志时,我们需要关注是否有特定的错误提示,比如“OOME”(Out of Memory Error),然后根据提示检查JVM的启动参数,如堆大小设置`-Xms`和`-Xmx`是否合理,或者是否过度使用了持久代空间。同时,检查代码中...

    jvm crash的崩溃日志详细分析及注意点

    在某些情况下,如Linux内核检测到内存不足(OOM,Out Of Memory)时,它可能会直接杀死一些进程,此时可能不会生成崩溃日志。要查找这类情况的信息,可以检查`/var/log/messages`文件。 分析JVM崩溃日志时,重点是...

    OutOfMemoryError_8种典型案例分享

    如果系统交换区耗尽,操作系统无法提供足够的虚拟内存,可能会导致抛出OutOfMemoryError: Out of swap space错误。这需要增加物理内存或调整交换区设置。 7. 请求的数组大小超出VM限制(Requested array size ...

    认识 java JVM虚拟机选项 Xms Xmx PermSize MaxPermSize 区别

    如果 Xmx 不指定或者指定偏小,应用可能会导致 java.lang.OutOfMemory 错误。如果 MaxPermSize 设置过小,可能会导致 java.lang.OutOfMemoryError: PermGen space。 因此,合理地配置 JVM 的内存参数是非常重要的,...

    Eclipse下使用ANT编译提示OutOfMemory的解决方法

    在使用Eclipse集成开发...总的来说,解决Eclipse下ANT编译的“OutOfMemory”问题,关键在于正确配置Eclipse中JVM的内存参数。通过上述步骤,开发者可以根据项目的规模和复杂性定制内存设置,保证ANT编译的顺利进行。

    Java Heap Cleaner:简单的函数清理,在运行时,Java堆内存,从而防止java OutOfMemory错误-matlab开发

    Java Heap Cleaner 是 Java 类的 MATLAB 包装器,可清除 Java 堆内存泄漏,防止臭名昭著的 Java OutOfMemory 异常。 Java 代码重新初始化一些负责内存泄漏的 JVM 类,然后强制进行垃圾回收。 重新初始化的 Java 类...

    JVM调优实战.doc

    如果老年代也无法容纳,就会出现"Out of Memory"错误。 实战篇涉及如何进行JVM调优,包括明确调优目标、准备测试环境、录制测试脚本、定义测试场景、执行性能测试、选择调优方案等步骤。调优过程中会观察JVM监控图...

    JVM内存空间分配笔记

    - **特点**:线程私有,生命周期与线程相同,不会导致OOM(Out Of Memory Error)。 #### 三、Java虚拟机栈 Java虚拟机栈描述的是Java方法执行的内存模型:每个方法被执行的时候都会同时创建一个栈帧(Stack Frame...

    img JVM调优实战.pdf

    性能问题通常表现为延迟增加、吞吐量下降或内存溢出(如“outofmemory错误”)。性能问题的分析可能包括监控内存使用情况、垃圾回收频率和持续时间、线程状态、CPU使用率等。通过这些监控结果,我们可以定位性能瓶颈...

    JVM-内存管理 2012-12.pdf

    由于方法区的垃圾收集并不频繁,因此可能会出现OutOfMemory错误。在JDK 8及之后的版本中,方法区的实现被移除了,取而代之的是元空间(Metaspace),它使用本地内存而不是JVM堆内存。 Java堆是JVM内存管理中最大的...

    Tomcat JVM内存设置方法

    这个值可能并不适合所有应用场景,特别是对于内存消耗较大的应用来说,可能会导致频繁的GC活动甚至OOM(Out Of Memory)错误。因此,根据实际需求调整JVM内存是非常必要的。 #### 四、Tomcat JVM内存设置步骤 按照...

    JVM内存问题最佳实践

    #### 八、OutOfMemory错误实例 在实践中,可能会遇到多种类型的`OutOfMemoryError`。例如: - `Java heap space`: 表示堆内存不足。 - `PermGen space`: 在Java 8之前,表示永久代空间不足。 - `Metaspace`: Java ...

    java jvm初步了解;打卡狂神

    OOM(Out of Memory)是 Java 中的一种常见错误,发生在 JVM 无法分配对象时。StackOverFlowError 是一种特殊的 OOM 错误,发生在方法调用栈溢出时。要分析 OOM 和 StackOverFlowError 错误,需要使用 JVM 的一些...

    jvm日志解读

    例如,适当增加堆内存(-Xmx)可以防止Out of Memory错误,设置合理的垃圾收集策略(如CMS或G1)可以减少停顿时间。同时,理解JVM的内存模型(如年轻代、老年代、永久代等)也对问题定位大有裨益。 总之,JVM日志是...

Global site tag (gtag.js) - Google Analytics