OutOfMemoryError 未完待续

JVM内存

Heap:
	Eden Space
	Survivor Space
	Old Gen
NonHeap:
	Code Cache
	Metaspace
	Compressed Class Space

PC程序计数器是JVM运行时数据区 Runtime Data Area 唯一没有OOM的区域;

发生OOM时,通常会指明,发生异常的区域,如:

Exception in thread thread_name:java.lang.OutOfMemoryError:[1-8]
  • Java heap space 堆空间
    	- Xmx  堆内存 最大值
    	- Xms  堆内存 初始值
    
  • GC Overhead limit exceeded GC过于频繁
    	1.增加参数,-XX:-UseGCOverheadLimit,关闭这个特性,同时增加heap大小,-Xmx1024m。
    	2.排查并优化消耗内存资源代码.
    
  • Requested array size exceeds VM limit 尝试分配过大的数组
  • Metaspace 元空间
  • request size bytes for reason. Out of swap space?
  • Compressed class space
  • reason stack_trace_with_native_method
  • PermGen space
    	- XX:PermSize 持久代 初始值
    	- XX:MaxPermSize 持久代 最大值
    

java.lang.StackOverflowError

栈溢出;
每个线程都有私有栈内存,当调用一个方法时,都会创建栈桢,放入栈中;
如果调用方法足够多,超过栈最大深度,就会抛出StackOverflowError;
毕竟有出现异常的就是递归深度过深 或 循环调用;
若代码无异常,可尝试调整栈内存大小;
栈帧:可以理解为方法在运行时的数据集,主要包括局部变量表、操作数栈、动态链接、方法出口、附加信息。

推荐阅读

转载于:https://my.oschina.net/u/2298158/blog/2878409

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值