虚拟机内存溢出分类以及内存参数设置

本文探讨了虚拟机内存溢出的几个方面,包括堆内存、栈内存和运行时常量池。堆内存溢出可通过设置-Xms和-Xmx参数避免,栈内存溢出与-Xss参数有关,而运行时常量池则涉及-XX:PermSize和-XX:MaxPermSize。内存溢出处理包括检查内存泄露和调整虚拟机参数。动态生成大量类可能导致方法区溢出,使用CGLib等工具时需谨慎。直接内存也需关注-XX:MaxDirectMemorySize参数。
摘要由CSDN通过智能技术生成

堆内存溢出

       堆的最小值:-Xms 

       堆的最大值:-Xmx

       堆的最大值参数-Xmx与最小值参数-Xms设置为一样即可避免自动扩展

       堆内存异常时dump出堆转储快照:-XX:+HeapDumpOnOutOfMemoryError

       堆内存异常处理:首先判断是内存溢出还是内存泄露。如果是内存泄露,通过工具查看泄露对象到GC Roots的引用链,找到泄露对象,查看为什么不能被垃圾收集器回收,定位泄露代码的位置。如果不存在内存泄露,那就是内存中的对象都必须存活着,应该检查虚拟机参数,是否应该将堆内存调到更大,或者从代码上优化,审查是否存在对象过多或生命周期过长的问题,以减少程序运行的内存消耗。

栈内存溢出

       由于HotSpot虚拟机不区分虚拟机栈和本地方法栈,所以对于HotSpot虚拟机而言,-Xoss参数是无效的,栈容量只由-Xss确定。

栈内存可能抛出的异常:1.线程请求的栈深度大于虚拟机允许的最大深度,抛出StackOverflowError异常;

                                        2.虚拟机在扩展栈时无法申请到足够的内存空间,抛出OurOfMemoryError异常。

在单线程操作中:1.使用-Xss减小栈内存容量,抛出StackOverflowError,异常出现时,输出的栈深度相应缩小&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值