目录[-] Java内存区域与内存溢出异常 一、概要 二、运行时数据区域 2.1程序计数器 2.2虚拟机栈 2.3本地方法栈 2.4堆 2.5方法区 2.6运行时常量池 三、对象访问 四、OutOfMemoryError异常 4.1Java堆溢出 4.2虚拟机栈溢出 4.3 方法区溢出 4.4 运行时常量池溢出 五、小结 Java内存区域与内存溢出异常 一、概要 我们可以带着以下几个问题去学习自动内存管理机制,罗列如下: 什么操作可能导致内存溢出?有哪些种类的内存溢出?都是在内存的哪些区域溢出?垃圾收集有哪些原则?有哪些垃圾收集算法及其实现?新生代和老年代的回收策略如何?各种内存相关的JVM参数是什么意思? 本文章主要总结问题1、问题2和问题3 二、运行时数据区域 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域,如下图所示 其中虚拟机栈、本地方法栈和程序技术器是线程私有的,方法区和堆是线程共享的. 2.1程序计数器 作用:当前线程所执行的字节码的行号指示器 五、小结 主要介绍虚拟机里面的内存是如何划分的,哪部分区域、什么样的代码和操作可能导致内存溢出异常。 ---------------------------------全文完------------------------------ 摘自《深入理解Java虚拟机》