一、运行时数据区域
1.1 程序计数器
1.2 Java虚拟机栈
1.3 本地方法栈
1.4 Java堆
1.5 方法区
1.6 运行时常量池
1.6 直接内存
二、虚拟机中的Java对象
2.1 对象的创建过程
2.2 对象的内存布局
2.3 对象的访问定位
三、内存溢出
1、内存泄漏memory leak :
是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄漏似乎不会有大的影响,但内存泄漏堆积后的后果就是内存溢出。
2、内存溢出 out of memory :
指程序申请内存时,没有足够的内存供申请者使用,或者说,给了你一块存储int类型数据的存储空间,但是你却存储long类型的数据,那么结果就是内存不够用,此时就会报错OOM,即所谓的内存溢出。
更多关于内存泄漏和内存溢出
3.1 堆内存溢出
3.2 虚拟机栈和本地方法栈溢出
3.3 方法区和运行时常量池溢出