StactOverflowError

java虚拟机运行时的内存分类以及出现异常分析(jvm之一)

廉价感情. 提交于 2019-11-29 23:36:37
java虚拟机所管理的内存包括以下几个运行时数据区域: 方法区(Method Area):线程共享的,存放已被虚拟机记载的类信息、常量、静态变量等数据。“永久代(Permanent Generation)” 虚拟机栈(Virtual Machine Stacks):线程私有,生命周期跟线程相同;java方法执行时创建栈帧存放局部变量表(各种基本数据类型、对象引用等)、操作数栈、动态链接等信息。 本地方法栈(Native Method Stack) 堆(Heap):线程共享的;存放对象实例;垃圾收集器管理的主要区域即GC堆。 程序计数器(Program Counter Register):当前线程所执行的字节码的行号指示器。Java虚拟机多线程是通过线程轮流切换并分配处理器执行时间的方式来实现的,所以线程需要一个独立程序计数器。 OutOfMemoryError异常 1、Java堆(heap)溢出 java HeapOOM -Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError (将堆的最小值-Xms与最大值-Xmx参数设置为一样可以避免堆自动扩展;-XX:+HeapDumpOnOutOfMemoryError出现内存溢出异常时Dump出当前的内存堆转储快照以分析) Java堆内存的OOM异常是实际应用中最常见的内存溢出溢出情况。异常信息