OutOfMemoryError 未完待续

JVM内存java

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;
毕竟有出现异常的就是递归深度过深 或 循环调用;
若代码无异常,可尝试调整栈内存大小;
栈帧:能够理解为方法在运行时的数据集,主要包括局部变量表、操做数栈、动态连接、方法出口、附加信息。

推荐阅读

相关文章
相关标签/搜索