Java内存区域与内存溢出异常
一、概要
我们可以带着以下几个问题去学习自动内存管理机制,罗列如下:
- 什么操作可能导致内存溢出?
- 有哪些种类的内存溢出?
- 都是在内存的哪些区域溢出?
- 垃圾收集有哪些原则?
- 有哪些垃圾收集算法及其实现?
- 新生代和老年代的回收策略如何?
- 各种内存相关的JVM参数是什么意思?
本文章主要总结问题1、问题2和问题3

二、运行时数据区域
Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域,如下图所示

其中虚拟机栈、本地方法栈和程序技术器是线程私有的,方法区和堆是线程共享的.
2.1程序计数器
作用:当前线程所执行的字节码的行号指示器
五、小结
主要介绍虚拟机里面的内存是如何划分的,哪部分区域、什么样的代码和操作可能导致内存溢出异常。
---------------------------------全文完------------------------------
摘自《深入理解Java虚拟机》