`

OutOfMemory种类和简单分析

 
阅读更多
1) 永久区溢出 Exception in thread "main" java.lang.OutOfMemoryError: PermGen space
 
PermGen space = Permanent Generation space
永久保存区域主要存放放Class和Meta的信息,Class在被 Load的时候被放入PermGen space区域(包括常量池: 静态变量),它和存放Instance的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的APP会LOAD很多CLASS的话,就很可能出现PermGen space错误。
 
这种错误常见在web服务器对JSP进行pre compile的时候。
 
可以通过设置jvm启动参数来解决: -XX:MaxPermSize=256m
 
2) 堆溢出 java.lang.OutOfMemoryError: Java heap space
 
用于存放类的实例(即对象),对象需要存储的内容主要是非静态属性。每次用new创建一个对象实例后,对象实例存储在堆区域中,这部分空间也被jvm的垃圾回收机制管理。
被缓存的实例(Cache)对象,大的map,list引用大的对象等等,都会保存于此。
 
堆内存会在jvm启动时自动设置,初始值 -Xms为物理内存的1/64,最大值-Xmx为1/4;可以通过参数-Xmn、-Xms、-Xmx设置,一般-Xms和-Xmx不超过80%,-Xmn为-Xmx的1/4;
 
3) 栈溢出 Exception in thread "main" java.lang.StackOverflowError
 
这部分用于存放局部变量、方法栈帧信息。栈帧太多,也就是函数调用层级过多时就会出现此异常,检查是否有死递归的情况。
 
对应的启动参数为:-Xss ( JDK1.5以后默认是1M,之前是256K)
 
实例,以下是1G内存环境下java jvm 的参数设置参考:
 
JAVA_OPTS="-server -Xms800m -Xmx800m -XX:PermSize=64M -XX:MaxNewSize=256m -XX:MaxPermSize=128m -Djava.awt.headless=true
分享到:
评论

相关推荐

    详解Pycharm出现out of memory的终极解决方法

    最近在跑程序,然后Pycharm就跳出out of memory 的错误提示,可能是由于读取的数据太多导致的,Pycharm有一个默认内存的最大容量上线,跳出提示的是1024M,也就是分配给Pycharm的内内存不够啦! 一、说明: pycharm...

    tomcat out of memory

    标题 "Tomcat Out of Memory" 指的是在运行Apache ...通过以上分析和解决方案,我们可以有效地处理和预防"Tomcat Out of Memory"问题,确保服务器稳定运行。持续监控、优化和学习将有助于提升系统的性能和可靠性。

    解决Out of memory问题

    解决Out of memory问题,玩游戏的童鞋遇到的问题,希望能帮到那些遇到此类问题的童鞋

    一次奇怪的Out of Memory 分析(附图)

    一次奇怪的Out of Memory 分析(附图)

    APE(flex out of memory)

    总之,解决"Out of memory-cannot load design mode"的问题需要深入理解Flex编程和内存管理,同时也需要熟悉所使用的开发工具的配置和限制。通过代码优化、调整IDE设置和保持软件更新,大多数情况下可以有效避免和...

    Out of memory

    "Out of memory" 是一个常见的...总之,“Out of memory”问题可以通过多种途径解决,包括硬件升级、软件优化、资源管理和配置调整。了解这些问题的根源并采取相应措施,有助于提升计算机性能并避免此类错误的发生。

    BlazeDS+Spring+activeMQ outofmemory

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

    解决出现CUDA error-out of memory的问题.pdf

    然而,在训练深度学习模型时,我们经常遇到“CUDA error: out of memory”这样的错误,这表明GPU的显存不足以运行当前的任务。本文将详细介绍这个问题的原因、影响以及解决方法。 ### 问题原因 1. **模型复杂度过...

    使用Memory Analyzer tool 检测OutofMemory异常

    标题 "使用Memory Analyzer tool检测OutofMemory异常" 涉及到的是Java内存管理的一个重要环节,即如何通过工具分析并解决程序运行时出现的内存溢出问题。Memory Analyzer Tool (MAT) 是由Eclipse基金会开发的一款...

    OutOfMemory的一个解决方法

    - **使用内存分析工具**:如VisualVM、JProfiler等,定期监控和分析应用程序的内存使用情况,及时发现潜在的内存泄漏或高消耗场景。 - **合理的数据处理策略**:对于大数据量的操作,考虑采用流式处理或分批加载数据...

    tomcat out of memory solution

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

    Git使用小坑 Out of memory错误的解决方法

    首先,当遇到"Out of memory, malloc failed"的错误时,最直观的解决思路是检查和调整系统的内存。在案例中,用户尝试通过结束不必要的进程、增大虚拟机内存来解决,但这些方法并未奏效。这是因为Git在处理大量对象...

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

    总之,解决Python运行文件出现“out of memory”问题的关键在于理解内存管理,合理规划数据处理流程,并适当调整程序结构和配置。通过上述方法,我们可以有效地避免或缓解内存不足的问题,让Python程序更加健壮和...

    out of memory是什么意思.docx

    "Out of Memory"是计算机操作系统中常见的一个错误提示,意味着系统在执行某个程序或操作时,没有足够的内存资源可供分配。这通常是由于以下几个原因引起的: 1. **运行的程序占用内存过大**:某些大型应用程序,如...

    mysqld-nt: Out of memory (Needed 1677720 bytes)解决方法

    MySQL数据库在运行过程中遇到“mysqld-nt: Out of memory (Needed 1677720 bytes)”错误,通常表示服务器在处理查询时内存不足。这个问题可能由多种因素引起,包括不当的配置参数、内存限制以及系统架构。以下是一些...

    Pytorch GPU显存充足却显示out of memory的解决方式

    综上所述,解决PyTorch GPU显存充足却报出“out of memory”的问题需要从多个角度进行排查和优化,包括模型结构、批处理大小、并行计算、版本更新、内存管理和监控等方面。通过这些方法,通常能够有效地避免或解决...

    mysql Out of memory (Needed 16777224 bytes)的错误解决

    MySQL数据库在运行过程中可能会遇到“Out of memory (Needed 16777224 bytes)”的错误,这通常表示数据库服务器在执行某查询时内存不足。该问题可能由多种因素引起,包括查询缓存设置、内存分配限制以及存储过程中的...

    Out of Memory(处理方案).md

    Out of Memory(处理方案).md

Global site tag (gtag.js) - Google Analytics