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]
- Xmx 堆内存 最大值 - Xms 堆内存 初始值
1.增长参数,-XX:-UseGCOverheadLimit,关闭这个特性,同时增长heap大小,-Xmx1024m。 2.排查并优化消耗内存资源代码.
- XX:PermSize 持久代 初始值 - XX:MaxPermSize 持久代 最大值
栈溢出; 每一个线程都有私有栈内存,当调用一个方法时,都会建立栈桢,放入栈中; 若是调用方法足够多,超过栈最大深度,就会抛出StackOverflowError; 毕竟有出现异常的就是递归深度过深 或 循环调用; 若代码无异常,可尝试调整栈内存大小; 栈帧:能够理解为方法在运行时的数据集,主要包括局部变量表、操做数栈、动态连接、方法出口、附加信息。